2차원 구조, column 마다 다른 데이터 type
row = 레코드 , col = 필드
데이터처리, 통계 등은 column 단위로 이뤄짐
tabular data ( 일반 csv 데이터 구조 처리에 적합)
가로열 index 세로열 column
{'컬럼명': [ 값, 값,.. ], '컬럼명': [값, 값, .. ] }
pd.DataFrame (딕셔너리)
dic= { 'gender' : [ 1, 2, 1,2], 'bloodtype': ["A", "B", "O", "AB"]}
df1= pd.DataFrame(dic)
DataFrame ( array, index= row index array, columns = 컬럼명 array)
df = pd.DataFrame(np.random.randn(6, 4), index=np.arange(6), columns=list("ABCD"))
df
head() , tail() : 최초, 마지막 5개
head (n), tail( n ) : 최초, 마지막 n개
df.head()
=> 마지막꺼 남기고 다
df.tail(2)
=> 밑에서 두개
df.index
df.colums
df.describe()
=> 간단한 통계
df.sort_values(by="B")
=> B기준으로 정렬
df[0:3] # rows => 괄호 한개면 행
df[["age","dept"]] # column => 괄호 두개면 열
df1.count()
df1[칼럼].count()
df1[칼럼].value_counts()
=> 각 종류별로 데이터가 몇개 있는지 세어줌
size는 NaN도 포함하여 모든 데이터의 갯수를 세어준다
df=pd.read_csv("studentlist.csv", encoding="cp949")
df
df.iloc[1:5, 0:3]
df.iloc[ [1,2,4], [0, 2]]
=> 원하는 행,열의 숫자index로 표시
df.loc[0:3, ["age","grade"]]
df[ df["bloodtype"]=="B"]
=> 값에 의한 참조. 정확한 row를 맞춰야해
df.loc [df["bloodtype"].isin( ["B", "A"] ), ["name", "age"] ]
df2= df[["age", "grade"]]
df3= df[["height", "weight"]]
df4=pd.concat([df2, df3], axis=1)
df4
=> axis=1 열 기준으로 df2 df3 합치기
기본꼴
merge(df_left, df_right, how='inner', on=None)
df3= pd.merge(df, dff, left_on='name', right_on='realname')
=> df dff 를 합치는데, how는 기본으로 inner, left on의 키는 name
df.groupby(["sex","bloodtype"]).mean()
numpy array 이어야 함
pandas column도 가능
“ro” 빨간 점
“b-” solid blue line default
“r–” 빨강 --- 선
“bs” 파랑 네모
“g^” 초록 세모
plt.figure(figsize=(7, 3))
#전체 가로세로 크기
##7by 3 크기
plt.subplot(231)
# 2 x 3 구성의 1번
plt.bar(names, values)
plt.scatter ( "height", "weight", c="grade" ,data=df)