2016년 7월 14일 목요일

Pandas 다루기 - Dataframe 값 접근/필터

Python에서 데이터 분석을 할 때 가장 편리한 것이 Pandas 라이브러리이고 가장 많이 사용하는 것이 Dataframe(2차원) 객체라고 이야기 하면서,
정작 필요할 때는 인터넷 검색으로 처음부터 다시 시작하고 있다는 것을 느끼고,
필수 적인것을 쓸 때마다 정리

1. Dataframe은 무엇인가: 2차원 배열로 row값(index), column값(header)를 가질 수 있는 자료구조, Pandas 라이브러리에 있다.

2. 어떻게 사용하는가 (  )
     'import pandas as pd' 라고 선언한 후에 사용한다.
     아래와 같이 df 를 만든다.

In [1]:
import pandas as pd
import numpy as np
In [2]:
dates = pd.date_range('7/14/2016', periods=8)
dates
Out[2]:
DatetimeIndex(['2016-07-14', '2016-07-15', '2016-07-16', '2016-07-17',
               '2016-07-18', '2016-07-19', '2016-07-20', '2016-07-21'],
              dtype='datetime64[ns]', freq='D')
In [3]:
df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])
df
Out[3]:
ABCD
2016-07-14-0.184950-0.8063921.494103-0.369560
2016-07-150.399724-0.063784-0.056321-0.007364
2016-07-16-0.626461-0.423751-0.0187030.087733
2016-07-171.198658-1.532482-0.2980020.634820
2016-07-180.312076-0.673361-0.141319-1.169763
2016-07-19-0.119623-0.293787-0.592312-1.167606
2016-07-20-0.1581412.5596730.949287-1.461863
2016-07-211.0424770.9689770.0507091.789358

     컬럼 A 에 접근하는 방법은 여러가지가 있다.
In [4]:
df['A']
Out[4]:
2016-07-14   -0.184950
2016-07-15    0.399724
2016-07-16   -0.626461
2016-07-17    1.198658
2016-07-18    0.312076
2016-07-19   -0.119623
2016-07-20   -0.158141
2016-07-21    1.042477
Freq: D, Name: A, dtype: float64
In [5]:
df.A
Out[5]:
2016-07-14   -0.184950
2016-07-15    0.399724
2016-07-16   -0.626461
2016-07-17    1.198658
2016-07-18    0.312076
2016-07-19   -0.119623
2016-07-20   -0.158141
2016-07-21    1.042477
Freq: D, Name: A, dtype: float64
In [6]:
df.ix[:, 0]
Out[6]:
2016-07-14   -0.184950
2016-07-15    0.399724
2016-07-16   -0.626461
2016-07-17    1.198658
2016-07-18    0.312076
2016-07-19   -0.119623
2016-07-20   -0.158141
2016-07-21    1.042477
Freq: D, Name: A, dtype: float64

     컬럼의 값으로 필터를 하려면 df 에 boolean(true, false) array를 주면 true만 볼 수 있다.
       아래 코드는 A 컬럼의 값이 0 보다 작을 경우만을 필터하여 보여준다.
In [7]:
df['A'] < 0
Out[7]:
2016-07-14     True
2016-07-15    False
2016-07-16     True
2016-07-17    False
2016-07-18    False
2016-07-19     True
2016-07-20     True
2016-07-21    False
Freq: D, Name: A, dtype: bool
In [8]:
df [ df['A'] < 0 ]
Out[8]:
ABCD
2016-07-14-0.184950-0.8063921.494103-0.369560
2016-07-16-0.626461-0.423751-0.0187030.087733
2016-07-19-0.119623-0.293787-0.592312-1.167606
2016-07-20-0.1581412.5596730.949287-1.461863





댓글 없음:

댓글 쓰기