Python pandas에서 Excel 집계 1
동기 부여
Excel의 정보를 집계하는데 시트에 계산식인지 엉망이 되면 움직임 느려진다. Python+Excel 관련 책을 서점에서 볼 수 있게 되었고, 공부하자.
환경
windows10
python3.9
VS Code
Pandas
openpyxl
준비
파이썬, pandas의 install (pip 사용해)는 끝난 전제
제목
이런 Excel이 있다.
특징으로는 부서의 열이 시트에 따라 다르다. (노란색 열입니다)
부서별 인원수를 집계하고 싶다.
sheet1
sheet2
sheet3
빠른 답변
pandas_lib.py에서 2 함수 정의
pandas_lib.py
import pandas as pd # pandasは、Pythonにおいて、データ解析を支援する機能を提供するライブラリ
import numpy as np
# keyでGroupingしてカウント
def countByKeyFromFileAndSheet(filename, sheetname, key):
df = pd.read_excel(filename, sheet_name=sheetname, engine="openpyxl")
dict = df[key].value_counts().to_dict()
print(dict)
return dict
def concatenateDict(dict1, dict2):
newdict=dict1
for k in dict2:
if k in newdict:
newdict[k] += dict2[k]
else:
#newdict.update(k, dict2[k])
newdict[k] = dict2[k]
return newdict
팬더 s_미안. py
countByKeyFromFileAndSheet로 Sheet1~3의 부서명의 열을 집계해,dict에 격납해 두고,concatenateDict로dict를 연결해dict를 생성한다.
pandas_main.py
import pandas_lib as pl
dict1 = pl.countByKeyFromFileAndSheet("./example.xlsx", "Sheet1", "部署")
dict2 = pl.countByKeyFromFileAndSheet("./example.xlsx", "Sheet2", "部署")
dict3 = pl.countByKeyFromFileAndSheet("./example.xlsx", "Sheet3", "部署")
dict = pl.concatenateDict(dict1, dict2)
dict = pl.concatenateDict(dict, dict3)
print(dict)
실행 결과
dict1-3에 집계 후, 최종적으로 3 시트 합계의 집계가 되어 있는 것을 알 수 있습니다.
{'営業部': 4, '開発部': 3, '総務部': 3}
{'営業部': 5, '開発部': 3, '経理部': 2}
{'開発部': 9, '経理部': 1}
{'営業部': 9, '開発部': 15, '総務部': 3, '経理部': 3}
마지막으로
concatenateDict의 중 for 문을 사용하여 진흙으로 구현했습니다만, 그 밖에 더 스마트한 구현 방법 있으면, 가르쳐 주셨으면 합니다.
Reference
이 문제에 관하여(Python pandas에서 Excel 집계 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/atmaru/items/f895d30ab188eda468dd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)