【Python】Pandasを使って売上分析【xlsxを読み込む】
目的
某サイトの売上分析を行う。
売上増減の要因を把握するために、商品ごとに売上を確認。
増減への貢献度(が高い商品についてさらに詳しく分析。
いつもやっている流れは
1.週間レポート(全トランザクションデータ)を商品名ごとに集計
2.増減に関与している商品を見つける
3.そこからリファラルなど詳細を調べて、解決策を探る。
特に統計的なことはなく、単純にEXCELで毎週しているデータ整理などの作業を自動化し、分析自体にもっと時間を費やしたいと思い、初心者ながらやってみることに。
Pythonにやってもらうこと
1.EXCELファイル(.xlsx)を読み込んで、データフレームに落とし込む
2.いらない行を削除
3.商品名やその他必要な項目ごとに集計
4.シートに書き出して、保存
xlsxファイルを読み込む
pandasはインストール済みなので、
import pandas as pd
df = pd.read_excal('ファイルパス')
すると次のエラーが発生。
ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.
調べてみると、EXCELファイルを読み込むにはxlrdをインストールしないといけないらしい。
ということで、Terminalで以下を実行。
pip3 install xlrd
次に出たエラーがこちら。
raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported
調べてみると、xlrd(2.01)はxlsファイル以外のサポートを終了したとのこと。
解決方法は
1. xlrdのふるい古いバージョンをインストールする(セキュリティ上の問題があるかも)
pip install xlrd==1.2.0
- openpyxlを用いてxlsxファイルを開く
import openpyxl
pandas.read_excel(‘ファイル名(ファイルパス)’, engine=’openpyxl’)
セキュリティの観点からこちらを採用。
xlsxファイルの最終的な読み込み+データフレームへの落とし込みコードはこちら。
import pandas as pd
import openpyxl
df = pd.read_excel('ファイル名', engine='openpyxl')
参照
https://obgynai.com/python-pandas-excel-read/
https://stackoverflow.com/questions/65254535/xlrd-biffh-xlrderror-excel-xlsx-file-not-supported
https://exerror.com/xlrd-biffh-xlrderror-excel-xlsx-file-not-supported/
ピボットテーブルの要領で商品ごとに集計
EXCELのピボットテーブルの機能は、pivot_tableで実行できます。
基本の型はこちら。
pd.pivot_table(df, index='行データ', columns='列データ', values='数値', aggfunc='sum')
indexとcolumns,valuesには、表のデーブルヘッダー名に置き換える。
aggfuncは集計方法です(sumは合計)。
今回は'商品名'ごとの売上'数量'の'合計'を見たいだけなので、columnsは削除。
実行結果はこんな感じになります。
商品名 数量
A 12
B 55
C 8
ひとまずここまで。
Author And Source
この問題について(【Python】Pandasを使って売上分析【xlsxを読み込む】), 我々は、より多くの情報をここで見つけました https://qiita.com/andkntr/items/3fdba4776290b0455730著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .