[References]
http://pythonstudy.xyz
1. Pandas
Pandas는 데이타 분석(Data Analysis)을 위해 널리 사용되는 파이썬 라이브러리 패키지이다. Pandas는 과학용 파이썬 배포판인 아나콘다(Anaconda)에 기본적으로 제공되지만, 아나콘다를 사용하지 않을 경우에는 'pip install pandas'를 통해 설치할 수 있다.
Series
가장 간단한 1차원 자료 구조인 Series는 배열/리스트와 같은 일련의 Sequence Data를 받아들이는데, 별도의 Index 레이블을 지정하지 않으면 자동적으로 0부터 시작되는 Default 정수 Index를 사용한다.
import pandas as pd
data = [1, 3, 5, 7, 9]
s = pd.Series(data)
print(s)
# 0 1
# 1 3
# 2 5
# 3 7
# 4 9
# dtype: int64
DataFrame
2차원 자료 구조인 DataFrame는 행과 열이 있는 Tabular Data(표로 정리된 자료)를 받아들이는데, 아래 예제는 그 한 가지 방법으로서 열(column)을 dict의 Key로, 행(row)을 dict의 Value로 한 Dictionary Data를 pd.DataFrame()을 사용하여 Pandas의 Data Frame 자료 구조로 변환한 예이다.
import pandas as pd
data = {
'year': [2016, 2017, 2018],
'GDP rate': [2.8, 3.1, 3.0],
'GDP': ['1.637M', '1.73M', '1.83M']
}
df = pd.DataFrame(data)
print(df)
# year GDP rate GDP
# 0 2016 2.8 1.637M
# 1 2017 3.1 1.73M
# 2 2018 3.0 1.83M
2. Data Access
Pandas에서 Series, DataFrame 등의 자료 구조를 만든 후, 다양한 방법을 통해 Data를 엑세스할 수 있다.
가장 간단한 방식으로 Pandas 자료 구조에 대해 Indexing 혹은 속성(Attribute)을 사용하는 것인데, 예를 들어 위에서 생성한 DataFrame인 'df'에 대해 'year 행'을 가져오기 위해 'df["year"]' 혹은 'df.year'를 사용할 수 있다. 또한, Boolean Indexing을 사용하여 특정 조건의 Data만 필터링 할 수도 있는데, 'df[df['year'] > 2016]'은 2016년 초과인 Data만 필터링해서 표시한다.
Data 량이 많은 경우는 'df.head()' 함수를 사용하면 처음 5개 row를 표시해 주며, 'df.tail()' 함수를 사용하면 마찬가지로 마지막 5개 row를 표시해 준다.
import pandas as pd
data = {
'year': [2016, 2017, 2018],
'GDP rate': [2.8, 3.1, 3.0],
'GDP': ['1.637M', '1.73M', '1.83M']
}
df = pd.DataFrame(data)
# 같은 표현
# print(df.year)
print(df['year'])
# 0 2016
# 1 2017
# 2 2018
# Name: year, dtype: int64
# Boolean Indexing
print(df[df['year'] > 2016])
# year GDP rate GDP
# 1 2017 3.1 1.73M
# 2 2018 3.0 1.83M
Pandas는 Data에 대한 다양한 연산 함수들을 제공하고 있는데, 예를 들어 합계 구하는 sum(), 평균을 구하는 mean(), 최소를 구하는 min(), 최대를 구하는 max() 등을 사용할 수 있다. 또한, 위 그림에서 보듯이, 기본적인 통계치를 모두 표시하기 위해 describe() 함수를 사용할 수 있다.
import pandas as pd
data = {
'year': [2016, 2017, 2018],
'GDP rate': [2.8, 3.1, 3.0],
'GDP': ['1.637M', '1.73M', '1.83M']
}
df = pd.DataFrame(data)
sum = df['GDP rate'].sum()
avg = df['GDP rate'].mean()
print(sum, avg)
# 8.9 2.966666666666667
print(df.describe())
# year GDP rate
# count 3.0 3.000000
# mean 2017.0 2.966667
# std 1.0 0.152753
# min 2016.0 2.800000
# 25% 2016.5 2.900000
# 50% 2017.0 3.000000
# 75% 2017.5 3.050000
# max 2018.0 3.100000
3. 외부 Data 읽고 쓰기
Pandas는 CSV 파일, 텍스트 파일, 엑셀 파일, SQL 데이타베이스, HDF5 포맷 등 다양한 외부 리소스에 Data를 읽고 쓸 수 있는 기능을 제공한다.
아래 예제는 엑셀 파일로부터 Data를 읽어 오는 기능을 예시한 것이다.
import pandas as pd
df = pd.read_excel('c:\Temp\Test.xlsx')
print(df)
# ID 국어 영어 수학
# 0 1 80 90 60
# 1 2 85 95 75
# 2 3 45 90 85
4. Pandas Cheat Sheet