반응형

5.2.8 중복 색인

is_unique 속성은 해당 값이 유일한지 아닌지 알려준다.

 

5.3 기술 통계 계산과 요약

pandas 객체는 일반적인 수학 메서드와 통계 메서드를 가지고 있다. 

이 메서드의 대부분은 Series나 DataFrame의 로구나 컬럼에서 단일 값(합이나 평균 같은) 을 구하는 축소 혹은 요약 통계범주에 속한다.

DataFrame

df.sum()

df.sum(axis='columns') axis ='columns'또는 axis=1 옵션을 넘기면 각 컬럼의 합을 변환한다.

skipna= False NA가 아니라면 Na값은 제외되고 계산된다.

level: 계산하려는 축인 계층적 색인(다중 색인)이라면 레벨에 따라 묶어서 계산한다.

 

idxmin이나 idxmax같은 메서드는 최솟값 혹은 최대값은 가지고 있는 색인값과 같은 간접 통계를 반환한다.

df.idxmax()

 

또 다른 메서드로 누산이 있다.

df.cumsum()

 

축소나 누산이 아닌 다른 종류의 메서드로 describe가 있는데 , 이 메서드는 한번에 여러 개의 통계 결과를 만들어낸다.

df.describe()

 

5.3.1 상관관계와 공분산

conda install pandas-datareader :

금융 사이트에서 구한 주식 가격과 시가총액을 담고 있는 다음 DataFrame을 생각

conda 혹은 pip를 통해 설치

import pandas_datareader.data as web
import pandas as pd
all_data = {ticker:web.get_data_yahoo(ticker) for ticker in ['AAPL','IBM','MSFT','GOOG']}
price = pd.DataFrame({ticker:data['Adj Close'] for ticker, data in all_data.items()})
volume = pd.DataFrame({ticker:data['Volume'] for ticker,data in all_data.items()})

 

returns = price.pct_change()
returns.tail()

시계열 데이터

corr메서드와 cov메서드

corr메서드는 NA가 아니며 정렬된 색인에서 연속하는 두 Series에 대해 상관관계를 계싼하고 cov메서드는 공분산을 계산

print(returns['MSFT'].corr(returns['IBM']))
print(returns['MSFT'].cov(returns['IBM']))

좀 더 편리한 문법

returns.MSFT.corr(returns.IBM)
returns.corr()

DataFrame의 corrwith메서드를 사용하면 다른 Series나 DataFrame과의 상관관계를 계산한다.

Series를 넘기면 각 컬럼에 대해 계산한 상관관계를 담고 있는 Series를 반환한다.

returns.corrwith(returns.IBM)

DataFrame을 넘기면 맞아 떨어지는 컬럼 이름에 대한 상관관계를 계산한다. 

returns.corrwith(volume)

axis ='columns'옵션을 넘기면 각 컬럼에 대한 상관관계와 공분산을 계산한다. 모든 경우 데이터는 상관관계를 계산하기 전에 색인의 이름순으로 정렬된다.

 

5.3.2 유일값 값 세기 멤버십

중복되는 값을 제거하고 유일값만 담고 있는 Series를 반환한다.

obj = pd.Series(['c','a','d','a','a','b','b','c','c'])
uniques = obj.unique()
print(uniques)

uniques.sort()를 이용해서 정렬

value_counts메서드는 Series 에서 도수를 계산하여 반환한다.

obj.value_counts()

value_counts에서 반환하는 Series는 담고 있는 내림차순으로 정렬한다.value_counts메서드는 pandas의 최상위 메서드로 , 어떤 배열이나 순차 자료구조에서도 사용할 수 있다.

pd.value_counts(obj.values, sort = False)

isin 메서드는 어떤 값이 Series에 존재하는지 나타내는 불리언 벡터를 반환하는데, Series나 DataFrame의 컬럼에서 값을 골라내고 싶을 때 유용하게 사용할 수 있다.

print(obj)
mask = obj.isin(['b','c'])
print(obj[mask])

isin과 관련이 있는 Index.get_indexer메서드는 여러 값이 들어 있는 배열에서 유일한 값의 색인 배열을 구 할 수 있다.

 

DataFrame의 apply함수에 pandas.value_counts를 넘기면 다음과 같은 결과를 얻을 수 있다.

data = pd.DataFrame({'Qu1':[1,3,4,3,4],'Qu2':[2,3,1,2,3],'Qu3':[1,5,2,4,4]})
result = data.apply(pd.value_counts).fillna(0)
result

 

06. 데이터 로딩과 저장 파일 형식

6.1 텍스트 파일에서 데이터를 읽고 쓰는 법

read_csv와 read_table 을 주로 사용

cat명령을 사용하면 파일의 내용을 확인 할 수 있다.

na_values 옵션은 리스트나 문자열 집합을 받아서 누락된 값을 처리한다.

skiprows를 컬럼을 띄운다.

 

pandas NA나 NULL 처리 

pd.read_csv('',na_values=['NULL'])

pd.isnull(data)

sentinels={'message':['foo','NA'],'something':['two']}

pd.read_csv('',na_values=sentinels)

반응형

+ Recent posts