初心者のためのDjango入門
■第19話:Pandasデータの可視化と実用的な使い方
(最終更新日:2023.06.24)
(絵が小さい場合はスマホを横に)
「Pandasデータを可視化しよう!」
Pandasでまとめたデータを活かすには、グラフにして可視化することが不可欠である。
実際excelなどの表計算ソフトでも、作成したデータに対して様々な形でグラフ化して、分析を行う。
今回はpandasで作成したDataFrameに対して、matplotlibというPythonライブラリを用いることでグラフ化する。
データサイエンスの入門ツールとして、ぜひ学んでみてほしい。
[目次]
1.データの可視化
本項では、PandasのDataFrameをグラフ化するには、MatplotlibやSeabornなどのライブラリを使用する方法が挙げられる。 今回はMatplotlibを用いて、グラフ化する方法について説明する。 まずは、Pandasで年齢、職業、収入に関するとデータフレームを作成する。 以下のとおり、データフレームが作成できた。
データフレームの作成
これに対して、グラフ化を行う。まずは、各職業の平均収入を棒グラフにしてみた。
平均に関してはpandasで先に計算する。職業別に収入の項目を平均化するには以下の4行目にあるように書く。
そして、平均化したデータを、matplotで棒グラフにする。棒グラフの作り方はkind=barを選択する。
plt.show()を実行すれば、下記のように作成したグラフが生成される。
これだけ見ると、サイエンティストの年収が高いように思える。
職業別年収の棒グラフ(平均)
次に年齢別に散布図を作成する。横軸に年齢、縦軸に年収をとり、プロットする。
散布図はkind=scatterと書く。あとはx='Age'で横軸年齢、y='Income'で縦軸年収としている。
先ほどと同様、plt.show()を実行すれば、下記のように作成したグラフが生成される。
この図を見ると、年齢と年収に強い正の相関があることが分かる。
つまり、職業よりも年齢が高いほど年収が上がるということが、このグラフから分かった。
Matplotlibの散布図(年齢 vs 年収)
このように、色んなグラフを持って多面的にデータを分析できると 「年齢と年収には強い相関があるのでは?」といった仮説を検証する精度が非常に高くなる。 データサイエンスとして非常に重要なアプローチである。 しかも、Pythonであれば、プログラムを走らせるだけでデータ抽出、データ加工、グラフ化まで自動化できるので、極めて効率的である。
2.実用的なPandasの使い方
実用的なPandasの使い方には「データのクリーニング」「データ変換」「データの集約」「時間系列データの処理」「Pivotテーブルの作成」「クロス集計」 などがある。今回は「Pivotテーブルの作成」と「クロス集計」について説明する。
Pivotテーブルの作成はpivot関数を用いて行う。縦軸に「日付」、横軸に「都市」、 ピボットさせたいデータに「気温」と「湿度」があるとすると、まず下記のようにデータフレームを作成し、 pivot関数を使うことで作成することができる。このように、温度と湿度(もしくは、Los AngelsとNew York)のように、 パラメータや要素がpivotする場合には、pivotテーブルを用いることで一つのテーブルに集約して表示することができる。 (ちなみに下記の気温は℉とする)
ピボットテーブルのコード(上)と結果(下)
クロス集計は、crosstab関数を用いて行う。
下記のようにデータフレームを作成し、crosstab関数を用いることでクロス集計を行うことができる。
下記の場合、A、B二つのデータ項目に各々morning,nightとicd, beerが格納されている。
それぞれのデータがいくつあるかを集計した結果が以下の通りとなる。
朝にiceを買う人が多く、夜にビールを買う人が多いことを示している。
この事自体は普通だが、2要素の関係性を示すことに威力を発揮する。
マーケティングの世界では有名な話だが、ビールを買う人は紙おむつも一緒に購入するという現象がある。
このような、一見何故か分からない関係性を示したのもこのような集計、分析のおかげである。
統計分析ツールとして使えるようにしておこう。
クロス集計のコード(上)と結果(下)
3.まとめ
今回、Pandasデータの可視化と実践的な応用例について説明した。
データの可視化に関しては、散布図にするだけで比例のような相関が見られたり、
ある値以上で、頭打ちになっているというデータの傾向を明らかにできる。
頭の中で考えた仮説を、データを持って検証できる非常に強力なツールだ。
是非、Pythonで自動化して、様々なデータを分析してみよう。きっと新たな発見があるはずだ。
一方、ピボットテーブルやクロス集計では、異なる2要素の関係性を数字で見ることができた。
ECサイトでビールと一緒に紙おむつを買う、何かのついでに何かを買う関係性があれば、適切なレコメンドができ、
売上を向上させることができるはずだ。
プログラミングの知識にとどまらず、その先の統計分析、マーケティングまで少し足を伸ばして貰えればと思う。
▼参考図書、サイト
Matplotlib入門 | Pythonを使ってデータを可視化してみよう! AI Academy Media
pandasでstack, unstack, pivotを使ってデータを整形 note.nkmk.me