10 minutes to pandas 2
참고: Data Girls
### Boolean Indexing
import pandas as pd
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
df2 = pd.DataFrame({'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })
df[df.A > 0]
# Boolean 조건을 충족하는 데이터프레임 값 선택
df[df > 0]
df2 = df.copy()
df2['E'] = ['one','one','two','three','four','three']
df2
#isin() 함수를 통해 필터링
df[df2['E'].isin(['two','four'])]
# Setting (설정)
#새 열을 설정하면 데이터가 인덱스 별로 자동 정렬
s1 = pd.Series([1,2,3,4,5,6], ind)
s1
df['F'] = s1
# 라벨에 의해 값 설정
df.at[dates[0],'A'] = 0
df.iat[0,1] = 0
df.loc[:,'D'] = np.array([5] * len(df))
df
df2 = df.copy()
df2[df2 > 0] = -df2
df2
# 4. Missing Data (결측치)
# Reindexing으로 지정된 축 상의 인덱스를 변경 /추가/삭제 가능
# Reindexing은 데이터의 복사본 반환
df1 = df.reindex(index = dates[0:4], columns = list(df.columns)+ ['E'])
df1.loc[dates[0]:dates[1],'E'] = 1
df1
# 결측치를 가지고 있는 행들 삭제
df1.dropna(how='any')
# 결측치를 채워 넣음
df1.fillna(value = 5)
# nan 값에 boolean 표식
pd.isna(df1)
#### 5. Operation (연산)
#일반적으로 null값 제외하고 계산
df.mean()
# 다른 축에서 동일한 연산
df.mean(1)
# 정렬이 필요하며 차원이 다른 객체로 연산.
#pandas는 지정된 차원을 따라 자동으로 브로드 캐스팅된다.
s = pd.Series([1,3,5,np.nan,6,8],index=dates).shift(2)
df.sub(s, axis = 'index')
# Apply(적용)
#데이터에 함수 적용
df.apply(np.cumsum)
df.apply(lambda x: x.max() - x.min())
# Histogramming(히스토그래밍)
s = pd.Series(np.random.randint(0, 7, size=10))
s
s.value_counts()