pandas
판다스(pandas)는 matplotlib과 numpy패키지들과 함께 데이터 사이언스에서 데이터분석 툴로써 자주 쓰이고, 기본이라고 할 수 있으므로 파이썬에서 자주 쓰이는 툴이다.
panasa를 사용하기 위해서 다음과 같이 모듈을 import를 해주어야 한다.
import pandas as pd
데이터 오브젝트
데이터 오브젝트 : 데이터를 담고 있는 그릇
- 시리즈 (Series) : 데이터를 담고 있는 1차원 배열 pd.Series()
- 데이터 프레임 (DataFrame) : 데이터를 담고 있는 2차원 배열 pd.DataFrame()
s=pd.Series(range(10))
print(s)
df=pd.DataFrame({
'A':1.,
'B':pd.Timestamp('20200417'),
'C':pd.Series(1,index=list(range(4)),dtype='float32'), #float32형의 1차월 배열 생성(시리즈)
'D':np.array([3]*4,dtype='int32'),
'E':pd.Categorical(['Mai','Kameoka','Jho','YoonSang']),
'F': 'Love'
})
print(df)
index = 행 columns = 열 sql의 레코드와 속성으로 생각하면 편하다.
데이터 확인하기
- 첫 3행 데이터를 확인 df.head()
print(df.head(3))
#실행결과
A B C D E F
0 1.0 2020-04-17 1.0 3 Mai Love
1 1.0 2020-04-17 1.0 3 Kameoka Love
2 1.0 2020-04-17 1.0 3 Jho Love
- 마지막 3행의 데이터를 확인 df.tail()
print(df.tail(3))
#실행결과
A B C D E F
1 1.0 2020-04-17 1.0 3 Kameoka Love
2 1.0 2020-04-17 1.0 3 Jho Love
3 1.0 2020-04-17 1.0 3 YoonSang Love
- 인덱스(.index) , 칼럼(.columns), numpy데이터(.values)
print(df.index)
#실행결과
Int64Index([0, 1, 2, 3], dtype='int64')
print(df.columns)
#실행결과
Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')
print(df.values)
#실행결과
[[1.0 Timestamp('2020-04-17 00:00:00') 1.0 3 'Mai' 'Love']
[1.0 Timestamp('2020-04-17 00:00:00') 1.0 3 'Kameoka' 'Love']
[1.0 Timestamp('2020-04-17 00:00:00') 1.0 3 'Jho' 'Love']
[1.0 Timestamp('2020-04-17 00:00:00') 1.0 3 'YoonSang' 'Love']]
- 열과 행을 바꾼 형태의 데이터프레임 .T
print(df.T)
#실행결과
0 1 2 3
A 1 1 1 1
B 2020-04-17 00:00:00 2020-04-17 00:00:00 2020-04-17 00:00:00 2020-04-17 00:00:00
C 1 1 1 1
D 3 3 3 3
E Mai Kameoka Jho YoonSang
F Love Love Love Love
- .sort_index() 를 이용하여 행과 열 이름을 정렬
print(df.sort_index(axis=1,ascending=False))
#axis = 0 : index 기준 , axis = 1 : columns 기준
#ascending = True : 오름차순 ascending = False : 내림차순
F E D C B A
0 Love Mai 3 1.0 2020-04-17 1.0
1 Love Kameoka 3 1.0 2020-04-17 1.0
2 Love Jho 3 1.0 2020-04-17 1.0
3 Love YoonSang 3 1.0 2020-04-17 1.0
- .sort_values() DataFrame 내부에 값을 기준으로 정렬
데이터 연산(Operations)
- numpy 당시 사용했던 .mean()을 사용할 수 있다.
print(df.mean())
#.mean(1)일 경우 인덱스 기준
#실행결과
A 0.010888
B -0.466986
C -0.555520
D -0.116358
dtype: float64
- df.sub axis를 기준으로 더함
x = pd.Series([2, 4, 6, np.nan, 8, 10],index=dates).shift(2)
#출력
2020-04-17 NaN
2020-04-18 NaN
2020-04-19 2.0
2020-04-20 4.0
2020-04-21 6.0
2020-04-22 NaN
Freq: D, dtype: float64
print(df.sub(x, axis='index'))
#실행결과
A B C D
2020-04-17 NaN NaN NaN NaN
2020-04-18 NaN NaN NaN NaN
2020-04-19 -1.526902 -2.438593 -3.324995 -4.203475
2020-04-20 -3.827653 -4.364799 -4.514897 -1.097704
2020-04-21 -4.293051 -5.271464 -5.067197 -7.268134
2020-04-22 NaN NaN NaN NaN