Python pandas 예제 Python 언어 패키지 중에서 pandas 설치 방법과 Datataframe 읽고 처리하는 예제에 대해서 설명드립니다. 그리고 pandas csv 저장과 읽기 방법 등을 예제 소스코드와 함께 설명드리도록 하겠습니다.
Python pandas 설치
pandas 패키지는 conda 명령어와 pip 명령어를 이용하여 설치 할 수 있습니다.
$ conda install pandas
$ pip install pandas
Python pandas 예제
예제로 설명드릴 데이터 구조로는 Series와 Dataframe에 대해서 설명드리도록 하겠습니다.
그리고 csv 파일로 저장하고 읽어드리는 방법에 대해서 함께 설명드리도록 하겠습니다.
아래의 코드를 실행하기 전에, 먼저 아래와 같이 numpy 와 pandas 를 import 해주시기 바랍니다.
import numpy as np
import pandas as pd
Series 예제
가장 먼저 설명드릴 pandas의 데이터 구조로는 Series 입니다.
Series는 1차원 데이터를 저장할 수 있는 데이터 유형으로 정수형, 문자형, 실수형 그리고 객체 등을 저장 할 수 있습니다.
1차원 구조 데이터를 저장하면서 인텍스를 함께 지정하면서 저장할 수도 있습니다.
아래는 Series 데이터 객체를 생성하는 방법을 나타냅니다.
s = pd.Series(data, index=index)
data 는 아래의 유형의 데이터가 될 수 있습니다.
- Python dict
- ndarray
- scalar value (예, 5)
Series 생성
아래의 내용은 Series 객체를 생성하는 예제입니다.
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
data 가 ndarray 일 경우, index는 반드시 data 의 크기와 동일해야 합니다. 만약, index가 전달되지 않았을 경우 인덱스는 자동으로 [0, …, len(data) – 1] 와 같이 생성되게 됩니다.
그리고 Series는 Python 데이터 타입 중에 다음과 같이 dict 으로 생성될 수도 있습니다.
d = {'b': 1, 'a': 0, 'c': 2}
pd.Series(d)
Series 원소 참조 방법
Series 의 원소 참조 방법은 다음과 같습니다.
print (s[0])
print (s[:3])
print (s[s > s.median()])
print (s[[4, 3, 1]])
0.2744207659085532
a 0.274421
b 1.083818
c -0.242577
dtype: float64
b 1.083818
e 0.649180
dtype: float64
e 0.649180
d -0.821298
b 1.083818
dtype: float64
DataFrame 예제
DataFrame은 라벨로 구성된 2차원 데이터 입니다. SQL 테이블 처럼 생각 할 수 있고, Series 객체를 dict 로 구성된 유형으로도 생각될 수 있습니다.
pandas에서 가장 많이 사용되는 데이터 유형입니다. Series 처럼 Dataframe 또한 아래와 같은 다양한 유형의 데이터를 입력 받을 수 있습니다.
- Dict 으로 구성된 ndarrays, lists, dicts, Series
- 2차원 numpy.ndarray
- 하나의 Series
- 다른 하나의 DataFrame
Dataframe 생성
DataFrame을 생성할 때 index(row 라벨) 과 column (컬럼 라벨)을 지정할 수 있습니다.
d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print (df)
위의 예제를 실행한 결과는 아래와 같습니다.
one two
a 1.0 1.0
b 2.0 2.0
c 3.0 3.0
d NaN 4.0
DataFrame의 결과 index는 각각의 컬럼의 index 들의 union 연산을 통해서 결정되게 됩니다. index와 컬럼 정보는 다음과 같이 확인 할 수 있습니다.
print (df.index)
print (df.columns)
Index([u'a', u'b', u'c', u'd'], dtype='object')
Index([u'one', u'two'], dtype='object')
그리고 다음과 같이 ndarray 또는 list 으로 구성된 dict 으로 DataFrame을 생성할 수도 있습니다.
d = {'one': [1., 2., 3., 4.],
'two': [4., 3., 2., 1.]}
df = pd.DataFrame(d)
Dataframe 원소 참조 방법
DataFrame은 row 와 column 이름으로 다음과 같이 참조 할 수 있습니다.
print (df['one'])
print (df['one'][0])
0 1.0
1 2.0
2 3.0
3 4.0
Name: one, dtype: float64
1.0
Pandas CSV 저장
DataFrame 또는 Series 데이터는 간편하게 CSV 파일로 저장할 수 있습니다. 아래의 예제는 위에서 생성한 df 의 DataFrame 객체의 데이터를 CSV 파일로 저장하는 코드입니다.
df.to_csv('data.csv')
,one,two
0,1.0,4.0
1,2.0,3.0
2,3.0,2.0
3,4.0,1.0
Series 데이터를 CSV으로 저장하기 위해서는 아래와 같은 코드를 사용합니다.
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
s.to_csv('data.csv', header=False)
a,0.34040494235420804
b,-0.6665800359820049
c,-1.3197732069112222
d,1.3894368919752718
e,0.47818392077676525
Pandas CSV 읽기
위의 방법으로 CSV 파일로 저장된 DataFrame을 읽기 위해서는 아래와 같은 코드를 사용합니다.
df = pd.read_csv('data.csv', index_col=[0])
print (df)
실행 결과는 아래와 같습니다.
one two
0 1.0 4.0
1 2.0 3.0
2 3.0 2.0
3 4.0 1.0
위에서 CSV 파일로 저장된 Series 데이터는 아래의 방법으로 읽어 드릴 수 있습니다.
s = pd.read_csv('data.csv', header=None, index_col=0, squeeze=True)
Pandas 직렬화 예제
panda 데이터를 저장하고 읽기 위해서는 직렬화(serialize) 하여 저장하고 읽기 방법을 추천합니다. 헤더, index, column 정보 등이 바이너리 포맷으로 한꺼번에 저장되기에 pandas 저장된 데이터를 그대로 읽어 올 수 있습니다.
아래의 예제는 pandas 데이터를 저장하고 읽어오는 예제입니다.
df.to_pickle('data.pkl')
df = pd.read_pickle('data.pkl')
( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)