#CSVデータをDataFrameに格納して、ピボットグラフを作成
やりたいことはCSVデータをピボットグラフにします。
今回の投稿は
CSVデータを作成して、そのCSVデータを使用してピボットグラフを作成します。
#CSVデータを作成。
CSVデータは[日付]、[商品]、[売上個数]で1週間分のデータを作成。
import csv
from datetime import datetime, timedelta
#商品リスト
product = ['TV','CAMERA','BOOK','DVD','iPhone','Android','CD','OVEN','PC','TOMICA']
#CSVのヘッダ
header = 'DAYS','PRODUCT','PCS'
#開始年月
start_dt = datetime(2018, 6, 1)
#CSVファイル
file = r"D:\study\phyton\product.csv"
i = 0
with open(file,'w',newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
#開始日付から7日分のデータを作成
for i in range(0, 6):
days = ( start_dt + timedelta( days = i ) ).strftime( '%Y/%m/%d' )
for pname in product:
i += 2
writer.writerow((days,pname,i))
#上のmakecsv.pyで作成されたCSVデータ
DAYS,PRODUCT,PCS
2018/06/01,TV,2
2018/06/01,CAMERA,4
2018/06/01,BOOK,6
2018/06/01,DVD,8
2018/06/01,iPhone,10
2018/06/01,Android,12
2018/06/01,CD,14
2018/06/01,OVEN,16
2018/06/01,PC,18
2018/06/01,TOMICA,20
2018/06/02,TV,3
2018/06/02,CAMERA,5
2018/06/02,BOOK,7
2018/06/02,DVD,9
2018/06/02,iPhone,11
2018/06/02,Android,13
2018/06/02,CD,15
2018/06/02,OVEN,17
2018/06/02,PC,19
2018/06/02,TOMICA,21
<<以下省略>>
#CSVデータからピボットグラフを作成
作成されたCSVデータ(product.csv)を使用してピボットグラフを作成
import matplotlib.pyplot as plt
# データの扱いに必要なライブラリ
import pandas as pd
import matplotlib.dates as mdates
#CSVを読込み
url = r"D:\study\phyton\product.csv"
plt.style.use('seaborn-dark')
#DataFrameに入れる
df = pd.read_csv(url,parse_dates=[1])
#DataFrameに入れたデータをピボットして、日別に集計
pv=df.pivot_table( values ='PCS',index = ['DAYS'], columns = ['PRODUCT'], aggfunc = sum )
fig = plt.figure(figsize=(5, 4))
ax = fig.add_subplot(1,1,1)
#積み上げグラフを作成
pv.plot(ax =ax ,kind='bar' , stacked=True)
#以下表示設定
plt.title("Daily goods sales", fontsize=12)
plt.xlabel("", fontsize=7)
plt.ylabel("", fontsize=7)
plt.subplots_adjust(bottom = 0.3)
plt.tick_params(labelsize=7)
plt.legend(bbox_to_anchor=(1.02, 1), loc='upper left', borderaxespad=0, fontsize=7)
plt.subplots_adjust(left = 0.1, right = 0.8)
plt.show()
作成されたグラフ
x軸の日付は日付の順に並んでいます。また、凡例はアルファベット順にならんでいます。
#コードの補足
CSVファイルを読込んだ状態
(Jupyterで確認)
#DataFrameに入れる
df = pd.read_csv(url,parse_dates=[1])
DataFrameのピボット集計するのは、pivot_table で行います。
df.pivot_table(values = 集計対象列, index = 集計グループ, aggfunc = 集計方法)
今回は、日付単位(DAYS)で商品毎(PRODUCT)の売上個数(PCS)を集計
pv=df.pivot_table( values ='PCS',index = ['DAYS'], columns = ['PRODUCT'], aggfunc = sum )
上記コードで作成された DataFrame pvのイメージ
(Jupyterで確認)
#次回の投稿
ピボットグラフは作成されたのですが、集計合計数順にソートしたり、上位5つ(TOP n)でグラフ表示する方法を投稿します
・Python DataFrame ピボットグラフの上位5位(Top 5)のみ抽出して棒グラフに表示
https://qiita.com/kngsym2018/items/3f7f207270976f3ccd07