팬더 파이썬의 타사 라이브러리

A, 팬더 프로필

파이썬 데이터 분석 라이브러리 또는 팬더 NumPy와는 도구, 생성 된 데이터 분석 작업을 해결할 수있는 도구를 기반으로합니다. 팬더 큰 라이브러리를 포함하고 일부 표준 데이터 모델에 필요한 도구를 효율적으로 대규모 데이터 세트를 운영합니다. 팬더는 함수를 제공 및 방법은 쉽고 빠르게 데이터를 처리 할 수있게. 당신은 곧 파이썬이 강력하고 효율적인 데이터 분석 환경이 구성하는 중요한 요소 중 하나입니다 찾을 수 있습니다.

팬더가 AQR 자본 관리에서 개발 한 데이터 분석 패키지 파이썬, 2008 년 4 월에 처음이며, 2009 년 매출의 말에 나온 파이썬 패킷에 초점을 개발하기 위해이 계속 PyData 개발 팀 및 유지 보수를 개발, 프로젝트의 PyData의 일부 . 팬더와는 원래 팬더의 시계열 분석은 좋은 지원을 제공하므로, 금융 데이터 분석 도구로 개발되었다. 파이썬 데이터 분석 (데이터 분석) 패널 (패널 데이터)의 데이터로부터 판다 이름. 패널 데이터는 패널 팬더 데이터 형식에 제공되는 용어에 대한 경제 큐브입니다.

둘째, 데이터 구조

  • 시리즈 : 1 차원 배열, 1 차원 배열 NumPy와와 비슷하다. 모두 기본 및 파이썬 목록 데이터 구조도 매우 유사하다, 차이는 다음과 같습니다 요소 목록은 다른 데이터 유형이 될 만 시리즈 배열을 허용하고, 메모리의보다 효율적으로 사용할 수 있도록, 동일한 데이터 유형을 저장할 수 있습니다, 운영 효율성을 향상시킬 수 있습니다.
  • 시간 - 시리즈 : 시리즈를 시간 인덱스.
  • DataFrame : 이차원 테이블 데이터 구조. 많은 기능과 R data.frame 유사합니다. 시리즈 DataFrame는 용기로 이해 될 수있다. 다음의 콘텐츠는 주로 DataFrame 기반.
  • 패널 : 삼차원 배열 등 DataFrame 용기를 이해할 수있을 것이다.

팬더는 두 개의 고유 한 기본 데이터 구조를 가지고있다. 이 두 개의 데이터 구조를 가지고 있지만 여전히 여전히 여기에 적용되는 몇 가지 파이썬 데이터 형식에, 그래서 파이썬 라이브러리이기 때문에 독자도, 당신은 또한 당신의 자신의 클래스 정의 데이터 유형을 사용할 수 있습니다, 다음 사항을주의해야한다. 그들은 데이터 조작 쉽게 허용, 시리즈 및 DataFrame :하지만, 팬더와있는 두 가지 데이터 유형을 정의합니다.

시리즈

파이썬 유형 시리즈 ()는 <클래스 'pandas.core.series.Series'>. 시리즈는 데이터의 일차원 구조이기 때문에, 우리는 다음과 같이 직접적으로 어레이를 통해 이러한 데이터를 만들 수있다 :

import pandas as pd
import numpy as np

series1 = pd.Series([1, 2, 3, 4])
print("series1:\n{}\n".format(series1))

# 这段代码输出如下:
series1:
0 1
1 2
2 3
3 4
dtype: int64

이 출력은 다음과 같습니다 :

  • 출력 데이터의 마지막 행은 데이터 타입의 INT64있는 일련의 유형이다.
  • 두 번째 열의 출력 데이터, 첫 번째 열의 인덱스 데이터이며, 인덱스 팬더 호출된다.

우리는 시리즈의 데이터와 인덱스를 인쇄 할 수 있습니다 :

print("series1.values: {}\n".format(series1.values))
print("series1.index: {}\n".format(series1.index))
这两行代码输出如下:
series1.values: [1 2 3 4]
series1.index: RangeIndex(start=0, stop=4, step=1)

(상기와 같은)을 지정하지 않으면, 인덱스 형태 인 [1, N-1]이다. 시리즈를 만들 때 그러나 우리는 또한 인덱스를 지정할 수 있습니다. 정수 인덱스가 반드시 필요하지 않습니다, 그것은 같은 문자열로 데이터의 모든 유형이 될 수 있습니다. 예를 들어, 우리는 일곱 노트 일곱 글자로 매핑. 개체 인덱스 그것에 의해 획득 될 수있는 데이터에 대응하는 다음 예 그렇다 :

series2 = pd.Series([1, 2, 3, 4, 5],index=["C", "D", "E", "F", "G"])
print("series2:\n{}\n".format(series2))
print("E is {}\n".format(series2["E"]))

# 这段代码输出如下:
series2:
C 1
D 2
E 3
F 4
G 5
dtype: int64
E is 3

DataFrame

유형에 DateFrame 파이썬 ()은 <클래스 'pandas.core.frame.DataFrame'>

DateFrame 만드는 세 가지 방법이 있습니다 :

1) 2 차원 배열에 의해 데이터 프레임을 만들기

arr2 = np.array(np.arange(16)).reshape(4,4)
df1 = pd.DataFrame(arr2)
  0   1   2   3
0 0   1   2   3
1 4   5   6   7
2 8   9   10  11
3 12  13  14  15

우리가 알 수이 출력으로부터 디폴트 인덱스 및 열 이름 [0, N-1]의 형태이다. 과 같이, DataFrame를 만들 때 우리는 열 이름과 인덱스를 지정할 수 있습니다 :

df2 = pd.DataFrame(np.arange(16).reshape(4,4),columns=["column1", "column2", "column3", "column4"],index=["a", "b", "c", "d"])
print("df2:\n{}\n".format(df2))
# 结果如下
  column1        column2          column3         column4
a 0              1                2               3
b 4              5                6               7
c 8              9                10              11
d 12             13               14              15

우리는 또한 직접 DataFrame을 만드는 데 열 데이터를 지정할 수 있습니다 :

df3 = pd.DataFrame({"note" : ["C", "D", "E", "F", "G", "A", "B"],"weekday": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]})
print("df3:\n{}\n".format(df3))
# 这段代码输出如下:
note weekday
0 C Mon
1 D Tue
2 E Wed
3 F Thu
4 G Fri
5 A Sat
6 B Sun

참고 사항 :
다른 열 DataFrame는 서로 다른 유형의 데이터가 될 수 있습니다
시리즈 어레이는 DataFrame를 만들 경우, 각각의 시리즈는 예를 들어, 하나보다는 라인이 될 것입니다 :

noteSeries = pd.Series(["C", "D", "E", "F", "G", "A", "B"],index=[1, 2, 3, 4, 5, 6, 7])
weekdaySeries = pd.Series(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],index=[1, 2, 3, 4, 5, 6, 7])
df4 = pd.DataFrame([noteSeries, weekdaySeries])
print("df4:\n{}\n".format(df4))
df4的输出如下:
  1 2 3 4 5 6 7
0 C D E F G A B
1 Mon Tue Wed Thu Fri Sat Sun

2) 방식에 의한 데이터 사전 프레임 만들기
아래의 데이터 사전 상자를 만드는 두의 것은 사전의 목록, 중첩 된 사전이다.

dic2 = {'a':[1,2,3,4],'b':[5,6,7,8],'c':[9,10,11,12],'d':[13,14,15,16]}
df2 = pd.DataFrame(dic2)
dic3 = {'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}
df3 = pd.DataFrame(dic3)
结果如下:
  a b c d
0 1 5 9 13
1 2 6 10 14
2 3 7 11 15
3 4 8 12 16
  one two three
a 1 5 9
b 2 6 10
c 3 7 11
d 4 8 12

사전 "키"( "이름", "표시 ", "가격") DataFrame 값 (이름)의 열 사전 각각 "키"및 "값"이며 그 목록은하다는 세로줄 특정 패딩 데이터.
인덱스가 결정되지 않고, Dic2는 (이미 실제로 시리즈 형성) 종래, 따라서 정의 된 것은 0의 정수이다. 상기 결과로부터, 아웃이는 것이 분명하다 이차원 데이터 구조 (Excel 또는 MySQL은 유사한 결과를 참조).
상기 데이터 열의 순서가 아니라 사전에 동일한 키의 순서로 정의되는 것이 아니라, 표시 DataFrame에서, 사전 키와 비교하여 열이 순서가 미리 결정될 수 있다는 것이다 명백한 차이가 있으므로 다음을 수행
dic2_1 = DataFrame (dic2 열 = [ 'B', 'A', 'C', 'D'])

3) 데이터 프레임의 방법에 의해 데이터 프레임 생성
DF4 = DF3을 [ '하나' , '세'] # 즉 DF3 하나 및 세 개의 열 선택
S3 = DF3 [ '하나'] # DF3 즉 열 중 하나를 선택

세, 인덱스 오브젝트

팬더 개체의 색인 축을 나타내는 메타 정보를 포함한다. 만들거나 DataFrame 시리즈 때, 배열 또는 시퀀스 태그 인덱스로 변환됩니다. 그것은 열과 행에 다음과 같은 방식으로 DataFrame 인덱스 오브젝트에 의해 얻어 질 수있다 :

series1 = pd.Series([1, 2, 3, 4])
print(series1.index)
代码输出如下:
RangeIndex(start=0, stop=4, step=1)

dic3 = {'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}
df3 = pd.DataFrame(dic3)
print(df3.columns)
print(df3.index)
这两行代码输出如下:
Index(['one', 'two', 'three'], dtype='object')
Index(['a', 'b', 'c', 'd'], dtype='object')

주 :
인덱스 중복 데이터를 포함 할 수 있으므로 설정되지 않고,
인덱스 오브젝트가 변경되지 않은 값이 데이터 보안 액세스 할 수 있도록
: DataFrame를 내부 접속으로 데이터를 다음 두 연산자를 제공
LOC를 : 행과 열로 액세스 데이터에 대한 인덱스
iloc : 액세스 데이터에 대한 로우 및 컬럼 인덱스를 통해

print(df3[['one','two']])                 # df3[列索引]
print(df3.loc[['a','b'], ['one','two']])  # loc[行索引,列索引]
print(df3.iloc[[0, 1], 0])                # iloc[行下标,列下标]

第二行代码访问了行索引为0和1,列索引为“note”的元素。第三行代码访问了行下标为0和1(对于df3来说,行索引和行下标刚好是一样的,所以这里都是0和1,但它们却是不同的含义),列下标为0的元素。

   one  two
a    1    5
b    2    6
c    3    7
d    4    8

   one  two
a    1    5
b    2    6

a    1
b    2
Name: one, dtype: int64

도 2는 자동 정렬
자동 정렬 - 두 시퀀스 두 연산 시퀀스에 대한 필요성이있는 경우는 그 값을 반영하는 지표가된다.

s5 = pd.Series(np.array([10,15,20,30,55,80]),index = ['a','b','c','d','e','f'])
s6 = pd.Series(np.array([12,11,13,15,14,16]),index = ['a','c','g','b','d','f'])
s5 + s6
s5/s6
结果如下
a    22.0
b    30.0
c    31.0
d    44.0
e     NaN
f    96.0
g     NaN
dtype: float64

a    0.833333
b    1.000000
c    1.818182
d    2.142857
e         NaN
f    5.000000
g         NaN
dtype: float64

해당하는 지수 g가 없기 때문에이 S5, S6은 인덱스의 예를, 대응 계산 두 누락 된 데이터를 생성한다 NaN이 값은 없다. 이 연산 결과는 두 시퀀스 인덱스보다는 단순한 합 또는 분할 된 두 시퀀스의 자동 정렬을 달성 할 수 있습니다. 데이터 프레임의 배향이 아닌 자동 정렬 단지 행 인덱스뿐만 아니라, 자동 열 인덱스 (변수 명)을 정렬
도 DataFrame 동일한 인덱스를 가지며, DataFrame은 2 차원 배열을 촉진하므로 아니라 행 인덱스,하지만 열 인덱스가 훨씬 더 강력한 애플리케이션의 순서에 비해이 부분이 데이터에 배치됩니다 상자 인덱스 데이터 설명 쿼리합니다.

넷째, 파일 작업

팬더 read_ 라이브러리는 다양한 파일 형식을 읽을 수있는 기능을 제공, 그들은는 다음과 같습니다
read_csv
read_table
read_fwf
read_clipboard
read_excel
read_hdf
read_html
read_json
read_msgpack
read_pickle
read_sas
read_sql
read_stata
read_feather
참고 : 또한 Excel 추가로 설치해야 읽을 수 있도록 파일 도서관 : xlrd, 당신은 PIP하여 설치를 완료 할 수 있도록 :
PIP3의 xlrd를 설치 sudo는

우리는 엑셀의 간단한 예를 살펴 다음으로 읽

import pandas as pd
import numpy as np
df1 = pd.read_excel("data/test.xlsx")
print("df1:\n{}\n".format(df1))
这个Excel的内容如下:
df1:
C Mon
0 D Tue
1 E Wed
2 F Thu
3 G Fri
...

우리는 다음과 같은 모양의 예를 CSV 파일, CSV 파일을 읽어 :
C, 월
D, 화
E, 수요일
F., 목
...
또한 매우 간단 읽
DF2 = pd.read_csv ( "데이터 / Test1.csv을 ")
인쇄 ("DF2 :. \ N- {} \ n - "형식 (DF2))

분리가 아닌 경우, 우리는이 같은 파일의 방법에 의해 지정된 구분 기호, 읽을 수
DF3 = pd.read_csv ( "|" "데이터 / test2.csv"에 9월 =)
인쇄 ( "DF3을 : \ {N- } \ n ".format (DF3) )

사실, read_csv다음 표와 같이 지원하는 매우 많은 매개 변수는 읽기 매개 변수를 조정하는 데 사용 :

매개 변수 설명
통로 파일 경로
9월 또는 구분 필드 구분
머리글 행 열 이름 수, 기본값은 0 (제 1 라인) 인
index_col 색인 결과로서의 행 번호 나 열 이름
이름 결과의 열 이름 목록
skiprows 행의 수는 시작 위치를 건너 뛰려면
na_values 대신 NA값의 순서
논평 라인 문자의 끝 부분에 별도의 코멘트
parse_dates 데이터 분석에보십시오 datetime. 기본값은False
keep_date_col 열은 날짜, 예약 열 연결을 구문 분석에 연결됩니다. 기본값은 False.
컨버터 열 계산기
dayfirst 모호함 날짜를 일으킬 수 있습니다 구문 분석 할 때, 내부 형태로 저장. 기본값은False
data_parser 기능은 구문 분석 날짜에 사용된다
NROWS 라인의 수는 파일 읽기 시작
반복자 의 일부를 읽기위한 TextParser 오브젝트를 돌려줍니다
chunksize 영역 지정 읽기 블록의 크기
skip_footer 행 수는 무시 될 파일의 ​​끝
말 수가 많은 출력 정보의 출력을 분석하도록
부호화 파일 인코딩
압착 구문 분석 된 데이터는 복귀 후 하나 개의 열을 포함하는 경우Series
수천 구분 기호 천 수

참고 : 바이트 UTF-8 인코딩 장치, 바이트 순서는 모든 시스템은 양, 아니 바이트 순서의 하나이며, 따라서 실제로 BOM ( "바이트 순서 마크")를 필요로하지 않습니다. 그러나 UTF-8 BOM과 BOM을 제공하기 위해 UTF-8-SIG의 필요입니다.
간단히 말해, UTF-8-SIG는 순서의 바이트 코드입니다.
이러한 문제가 발생하는 경우 읽기 CSV에서 팬더, 오류, 주요 오류, 파일 "팬더 / index.pyx", 라인 137, pandas.index.IndexEngine.get_loc에서 (팬더 / index.c : 4154)의 경우
파일 "을 판다 /index.pyx ", 라인 159, pandas.index.IndexEngine.get_loc에서 (팬더 / index.c : 4018)
파일"팬더 / hashtable.pyx ", 라인 675, pandas.hashtable.PyObjectHashTable.get_item에서 (팬더 / 해시 테이블 이 .c : 12,368)는
파일 "팬더 / hashtable.pyx"은 라인 (683)은, pandas.hashtable.PyObjectHashTable.get_item (팬더 / hashtable.c에서 : 12,322)
,이 경우, UTF-8 인코딩 SIG 같은, 즉 사용을 고려 encdoinf = 'UTF-8-SIG '
이 코드를 변경하려고 할 때 만남은 중국 깨져

자세한 기능 설명을 Read_csv 여기를 참조 : pandas.read_csv를

V. 1 개 쿼리 데이터

引入数据集
student = pf.read_csv( '文件路径名' , header = None) (header 表示返回的数据是否有别名)

student.shape    # 查看数据的形状
data.columns     # 查看所有的列名
data.index       # 查看索引
data.dtypes      # 查看每一列数据的类型
data.ndim        # 查看数据的维度

# 查询前几行 或 后几行
student.head(5)
student.tail(5)

# 查询指定的行
student.ix[ ]     # 索引是字符串或数字,多行索引必须使用两个中括号student.ix[[ ]]
student.loc['a']    # 索引字符串
student.iloc[1]   # 索引数字

# 查询指定的列
student[列名] 或 student.列名    #注意当我们提取了一列,Pandas将返回一个series,而不是一个dataframe。
student [['Name' , 'Height' , 'Weight']]    #如果多个列的话,必须使用双重中括号
student.ix [:,['Name' , 'Height' , 'Weight']]    #通过ix查询指定的列

# 查询指定的行和列
student.ix [[0,2,4],['Name' , 'Height' , 'Weight']]

下面通过布尔索引来实现特定信息的查询
student[student['sex'] == F] --- 查询所有性别为女生的信息
student[(student['sex'] == F) & (stuent['age'] > 18)] -- 多条件查询,查询所有性别为女且年龄大于18岁的信息
student[(student['sex'] == F) & (stuent['age'] > 18)] [['name' , 'height']] --查询性别为女,年龄大于18的学生的姓名 和 体重

통계 분석 V.2

팬더 모듈은 우리에게 등 합계, 평균, 최소, 최대로 성능 함수 기술 통계를 많이 제공하고, 이러한 기능을 우리는 특정 보면 :
첫째 무작위로 세 개의 데이터 세트를 생성

np.random.seed (1234)
D1 = pd.Series (2 * np.random.normal (크기 = 100) +3)
D2 = np.random.f (2,4- 크기 = 100)
D3 = np.random .randint (1100, 사이즈 = 100)

d1.count () # 비 - 널 요소 계산
d1.min () # 최소
d1.max () # 최대
함수 R which.min 유사한 d1.idxmin () # 최소 위치
d1.idxmax ( 최대의) # 위치는 함수 R which.max 비슷
d1.quantile (0.1) # 10 % 분위수의
d1.sum () # 합산
d1.mean () # 평균
의 d1.median () # 자리
d1.mode () # 모드
d1.var () # 분산
d1.std () # 표준 편차
d1.mad () # 평균 절대 편차
d1.skew () # 비대칭
d1.kurt () # 첨도
하나와 이차원 방법은 상술 가능하다.

d1.describe () # 출력은 하나 개 이상의 기술적 통계 지표 만 또는 시퀀스 데이터 블록 descirbe 방법은,이 방법에는 1 차원 배열 없다

간단한 기술 통계 위, 상관 계수가 또한 제공된다 연속 변수 (CORR) 및 공분산 매트릭스 (COV)을 해결하는 외에도. 이것은 R 언어의 사용과 일치한다.
df.corr ()

계산에 대한 상관 계수 피어슨 방법은 호출 할 수 있습니다 또는 kendell 방법 또는 방법은 피어슨 기본 방법을 사용하여, 스피어.
df.corr ( '스피어')

이 변수의 나머지 부분과 하나 개의 변수 상관 계수에 초점을하려는 경우, 당신은 corrwith을 사용할 수 있습니다, 다음 당사자 만 변수 X1의 나머지 부분과 상관 계수에 관심 :
df.corrwith (DF를 [ 'X1'])

숫자 변수 간의 공분산 행렬
df.cov ()

트랜스
df3.T

축 정렬
a.sort_index (축선 = 1, 오름차순 = 거짓)에,
상기 축 = 1 종류의 모든 열을 나타내고, 다음의 수는 또한 이동 일어난다. 상승 뒤에 = 거짓, 내림차순없는 매개 변수 기본값의 오름차순으로 표현.

숫자가 DataFrame에 대해 정렬
a.sort (컬럼 = 'X')
승순이 열에 X가된다. 유일한 열 (X) 및 모든 컬럼 샤프트 이상의 동작으로 분류 될 것임을 유의해야한다.

5.3 작업 SQL과 같은

1) 새로운 행 또는 열을 추가

밖:

 

밖:

 

데이터의 행의 수는 세 개의 로우 프레임, CONCAT 방법 후 D3, 6 행과 4 열로을 D2 있지만, D3은 행의 수를 컬럼의 수를 열 수를 D1 + D2의 행의 수이다 = D3 = D1은 D2에 +는 시퀀스
CONCAT 함수 자동 개의 가변 데이터 프레임, 할당되지 않은 새로운 열을 정렬 할 수 NaN이 비어로 나타난다

--- 새로운 열이 생성되며, 존재하지 않는 열에 할당을 추가
D1을 [ '네'] = 11

2) 삭제

1) --- dataframe 델 D1 제거
[ 'A'지정된 라인 dataframe --- d1.drop를 (삭제) 2 ', B'), 상기 데이터 블록 (D1)가 데이터의 인덱스 값을 삭제하고 B
3) 제거 dataframe 지정된 열 --- d1.drop ( '하나', ' 둘'축 = 1), 값은 디폴트 값은 축 라인 0,0 축 삭제 열 또는 행을 지정한 컬럼 1 나타내는
4 ) 부울 인덱스 데이터 쿼리 상자, 데이터의 조건을 충족하기 위해 반환 실제로 삭제 데이터 작업,
d1.drop (D1을 [ '세'] > 11)

3) 변화 값 데이터를 수정할

 

4) 멀티 테이블 작동 링크 분류, 응집을 강조 점검

집계 기능 4.1) 군
중합 조작 기능 GROUPBY () 팬더 데이터 모듈에 의해 구현 될 수있다 : 중합


제한이없는 집계 함수를 할 경우, 중합하여 그룹 이름, 키, 몸무게, 성별, 나이 열이 데이터 블록 학생들과 수치 데이터를 계산, 이름 열은 문자열, 그것은 계산되지 않습니다.

드롭으로 변수를 삭제

 

GROUPBY 패킷은 또한 나이와 높이에 대한 평균을 계산하기 위해, 나이 및 성별과 같은 그룹 변수 다수 제공 할 수있다

 

또한 AGG 의해 계산 각 패킷에 대한 통계를 더 수행 할 수있다 ([,,])

 

4.2) 정렬

통계 분석의 일일 작업에 매우 일반적입니다 정렬, 우리는 순서, sort_index를 사용할 수 있으며 sort_values ​​작업 시퀀스 및 데이터 프레임의 종류를 달성 :

: 우리는 설정의 내림차순으로 다시 시도

상단이 결과는 실제 값으로 분류되어, 그 결과 값을 기준으로 정렬 () 함수를 sort_values을 권장 경고 메시지에 나와있다.
일반적으로, 예를 들어, 값 데이터 상자으로 분류되어 있습니다 :

4.3) 다중 테이블 조인

내가 데이터 연결이 작동 할 이상 권장 합병 기능입니다 팬더, 데이터베이스 언어를 통해 달성 할 키워드에 가입, 연결은 다양한 연결의 시작부터, 여러 테이블 사이의 매우 일반적인 데이터베이스 작업과 외부 조인.
다음은 건설 학생들의 성취도 테이블

 

학생들은 이제 연결을 만들기 위해 학생 및 학생들의 성취도 점수 표를보고 싶어, 그것은 어떻게 작동합니까?

 

기본적으로,이 참고 병합 기능은 두 개의 테이블, 즉 두 테이블의 데이터가 함께 반환 부 사이의 접속 내에서 구현된다. 오른쪽 오른쪽 연결이다; 자켓 외부 커넥터는 연결 파라미터에 의해 설정 될 수 있는지, 왼쪽 연결 떠났다.

 

좌 달성하기 위해 가입하는 것은 정보를 일치 점수 테이블이, 얼마나 많은 이름에 연결되어 있지에, 결과는 NaN가 표시됩니다를 장착 할 수있는 반면, 테이블의 모든 학생 정보를 유지하는 것입니다.

여섯 개 누락 된 값

내가 쓰고 싶은, 그리고하지 않는 링크 그것은 http://www.cnblogs.com/nxld/p/6058591.html에

https://www.cnblogs.com/lingLongBaby/p/7147378.html

http://www.cnblogs.com/WoLykos/p/9349581.html

https://www.cnblogs.com/zuizui1204/p/6423069.html

게시 33 개 원래 기사 · 원 찬양 4 ·은 10000 +를 볼

추천

출처blog.csdn.net/fenglepeng/article/details/104739623