>100 Views
September 07, 23
スライド概要
データサイエンス体験動画「データサイエンス チュートリアル 猫のタロー編」、第18回目、Section 16「seabornでグラフ描画(1)」です。
今回からは、時間のドリルダウンとライブラリ「seaborn」を使ったグラフの描画です。
seabornは、 x、y軸(場合によってはz軸も)が列でないとグラフを描いてくれません。groupbyなどを使って年や年月ごとに売上の合計を出すと、年や年月がインデックスになっていますので、列にして直す必要があることに注意して下さい。
それらを実現するプログラムは下記の7つです。
㉖’ データ名.groupby(“列名”).sum()
㉝ import matplotlib.pyplot as plt
㉞ import seaborn as sns
㉟ %matplotlib inline
㊱ sns.barplot(data=データ名, x=“列名1”, y=“列名2”)
㊲ データ名.reset_index()
㊳ データ名.groupby(“列名”, as_index=False).sum()
1st STEP同様、動画のテキスト、追加情報は下記のブログを参考にしてください!
■この動画のブログ
データサイエンス チュートリアル
https://tutorial4datascience.blogspot.com/
■参考URL
seaborn公式ドキュメントのGallery
https://seaborn.pydata.org/examples/index.html
1 2nd STEP 集計とグラフ描画 Section 16 seabornでグラフ描画(1) ㉝ import matplotlib.pyplot as plt ㉞ import seaborn as sns ㉟ %matplotlib inline ㊱ sns.barplot(data=データ名, x=“列名1”, y=“列名2”) ㊲ データ名.reset_index() ㊳ データ名.groupby(“列名”, as_index=False).sum()
2 Section 16 seabornでグラフ描画(1) 1. groupby(“列名”)で年ごとの売上高を集計 Section 13以降は、①スライシングとして時間と商品の組み合わせを選んだら、②ドリ ルダウン・アップを行うというOLAPキューブの分析手法を実践していきます。 そのために、前回作成した「id_pos7」を、年、さらに年月ごとに「Total」の総和を算出し ていきます。 この場合は、Section 11 で解説した「groupby(㉖)」のバリエーション を使います。 ㉖‘ データ名.groupby(“列名”).sum() 「列名」で「Year」を選んだら年ごと、「Month」を選んだら年月ごとに「Total」の総計が 算出されます。
3 Section 16 seabornでグラフ描画(1) 2.ライブラリ「seaborn」のインポート Section 13で説明したライブラリ「seaborn」は、複雑なデータをシンプルなコードでグラフ 化できます。 「seaborn」は、同じくデータをグラフ化するライブラリ「matplotlib」の機能の一部を使い ますので、 「matplotlib」も一緒にインポートします。 また、「%matplotlib inline」は、出来上がったグラフをノートブックの結果セルに表示 させる機能ですから、これも追加しておきます。 ㉝ import matplotlib.pyplot as plt ㉞ import seaborn as sns ㉟ %matplotlib inline この3行は、セットでコードセルに記載するように覚えておきましょう!
4 Section 16 seabornでグラフ描画(1) 3. seabornで棒グラフを描く seabornでグラフを描くには、最低限、次のようにプログラムを書きます。 sns. グラフの種類 (data=データ名) 棒グラフの場合は、グラフの種類に「barplot」、()内の「data=データ名」にカンマで続け て、x軸にする列、y軸にする列を指定します。x、y軸を指定しないと、適当にseaborn が判断してグラフを描いてしまいます。 ㊱ sns.barplot(data=データ名, x=“列名1”, y=“列名2”) また、seabornは、 x、y軸(場合によってはz軸も)が列でないとグラフを描いてくれませ ん。groupbyなどを使って年や年月ごとに売上の合計を出すと、年や年月がインデックス になっていますので、列にして直す必要があります。 その場合は、下記のプログラムを使います。 ㊲ データ名.reset_index()
5 Section 16 seabornでグラフ描画(1) 参考:seabornで作成できるグラフ seabornで作成できるグラフは、公式ドキュメントのGalleryを見るとわかりやすいでしょう。 気に入ったグラフにマウスオーバーすると、グラフの種類が表示され、クリックするとプログラムが 現れます。英語表記ですが、気に入ったグラフを見つけて、少しづつ試してみましょう! https://seaborn.pydata.org /examples/index.html
6 Section 16 seabornでグラフ描画(1) ㉖‘ データ名.groupby(“列名”).sum() まずは、㉖‘を用いて、「id_pos7」を列「Year」の要素ごとに、合計値を求めましょう。 「Year」は、datetimeから年を抽出したものですから、年ごとの売上合計値「Total」の集計 表が出来上がります。この場合、「UnitPrice(単価)」、「Quantity(数量)」の合計は あまり意味がないですね。
7 Section 16 seabornでグラフ描画(1) ライブラリのインポート seabornを使う環境を整えます。 各種ライブラリやグラフを結果セルに表示させるプログラムをインポートしましょう。
8 Section 16 seabornでグラフ描画(1) ㊱ sns.barplot(data=データ名, x=“列名1”, y=“列名2”) さて、いよいよグラフを描いていきましょう。 先ずは、最小限のプログラム で試してみます。 「UnitPrice」、「Quantity」、「Total」の2010年と2011年の平均値のグラフになってし まいました。ちなみに、各棒の真ん中の線は、95%信頼区間を表しています。
9 Section 16 seabornでグラフ描画(1) ㊱ sns.barplot(data=データ名, x=“列名1”, y=“列名2”) ㊱に従い、x軸とy軸を指定してグラフを表示させてみましょう。 エラーになってしまいますね。
10 Section 16 seabornでグラフ描画(1) ㊲ データ名.reset_index() ㊲を用いて、インデックスになっている「Year」を列に戻した「id_pos9」を作成します。 これで、x軸を「Year」にすることができます。
11 Section 16 seabornでグラフ描画(1) ㊳ データ名.groupby(“列名”, as_index=False).sum() seabornでグラフを描くことが決っているときは、「㉖‘ データ名.groupby(“列 名”).sum()」の最初の()内の「“列名”」にカンマで続けて、「as_index=False」を加 えると、 「Year」を列にすることができます。 ㊳ データ名.groupby(“列名”, as_index=False).sum()
12 Section 16 seabornでグラフ描画(1) ㊱ sns.barplot(data=データ名, x=“列名1”, y=“列名2”) もう一度「id_pos9」に㊱を適応させます。2010年と2011年の売上の総和のグラフが できました。ほとんどが、2011年の売上ですね。 でも、よく見るとy軸は変な単位になっています・・・。