Python pandas 예제


Python pandas 예제 Python 언어 패키지 중에서 pandas 설치 방법과 Datataframe 읽고 처리하는 예제에 대해서 설명드립니다. 그리고 pandas csv 저장과 읽기 방법 등을 예제 소스코드와 함께 설명드리도록 하겠습니다.

Python pandas 예제

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')

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)