본문 바로가기

Pandas

pandas > pivot_table 사용법


rows = mysql_util_query_to_all_dist_multithread(sql)
df = pd.DataFrame(rows)
df.columns = ['yyyymmdd', 'userid', 'postid', 'commentcnt']

pf = pd.pivot_table(df,
                    index=['yyyymmdd'],
                    values=['userid', 'commentcnt'],
                    aggfunc={'userid':[len, pd.Series.nunique], 'comments':[np.sum, np.average]},
                    fill_value = 0,
                    margins=False)
print(pf)
pf.to_csv("output.csv", mode='w')

 

이 코드를 활용하면 앞으로 시간을 많이 아낄수 있을 것 같다. 주로 데이터베이스에서 값을 가져온 다음에 그룹핑해서 통계를 뽑는 경우가 많은데 그동안에는 아래의 절차로 작업을 했었다. 

 


 

1) 데이터베이스에서 조회한후 csv파일에 raw데이터를 저장한다

2) csv파일을 서버 -> 로컬로 가져온다.

3) 넘버스에서 읽어들인다. 

4) 넘버스에서 복사해서 엑셀에 붙여넣기 한다. 

5) 엑셀에서 피벗을 이용해 원하는 값을 추출한다. 

6) 엑셀 피벗 결과를 복사해서 텍스트에디터에 붙여넣기 한후, 다시 텍스트에디터로부터 복사해서 넘버스에 붙여넣기 한다.

7) 넘버스에서 피벗 결과를 챠트로 그린다. 

 


 

어마어마하게 절차가 많은데 다 사연은 있다. 이제는 다음과 같이 작업하면 된다.

 


1) 데이터베이스에서 조회한후 판다스 pivot_table 함수를 이용해서 원하는 값을 추출한후 csv파일에 저장한다

2) csv파일을 서버 -> 로컬로 가져온다.

3) 넘버스에서 읽어들여서 챠트로 그린다. 


 

 

원래 1) ~ 5)번 작업을 몇 번 반복해서 하기 때문에 실제로 줄어드는 시간은 어마어마하게 많을 것 같다. 

 


Where there is a will there is a way