【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
  1. 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

ひとまずここまで。

参照
https://pyhoo.jp/pivot