koji/メガネ男の日誌

日々の学び、活動状況を記録します。仕事のことは少なめ。

python の melt() でグラフ化しやすいデータに加工する

f:id:kj_man666:20200426103314j:plain

python の melt でグラフ化しやすいデータに加工するテクニックをまとめました。

まずは、グラフ化しにくい DataFrame型のデータを作成します。

import pandas as pd

# データの作成
df = pd.DataFrame(data=[('a',1,2,3,4,5,6,7),('b',8,9,10,11,12,13,14),
                        ('c',15,16,17,18,19,20,21),('d',22,23,24,25,26,27,28),
                        ('e',29,30,31,32,33,34,35),('f',36,37,38,39,40,41,42),
                        ('g',43,44,45,46,47,48,49)])

df.columns = ['category', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']

こんな感じのデータが出力されます。

f:id:kj_man666:20200426102102p:plain

これだとカラムの1つか2つくらいしかグラフに出来ず、Sun(日曜)~Sat(土曜)と時系列にならべることができません。

df.plot("category", "Sun")

f:id:kj_man666:20200426102153p:plain

そこで、melt 関数を使って並べ替えます。

df_m = pd.melt(df, id_vars=['category'], 
              value_vars=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],
              var_name = "Day of the week", value_name = "Num")

f:id:kj_man666:20200426102307p:plain

以降、データが続く・・・

このようにデータを整えると、時系列に並べてグラフ化ができます!

df_m.plot("Day of the week", "Num")

f:id:kj_man666:20200426102351p:plain

以上になります、最後までお読みいただきありがとうございました。

コードはこちら

参考

nekoyukimmm.hatenablog.com

公式ドキュ

pandas.pydata.org