▶ Python初学者向けにデータ分析に関する記事を書いています
はじめに
今回はpandasのplot関数を基本から解説します。Pythonで可視化するときに真っ先に思いつくのはmatplotlibかと思いますが、pandasのplot関数はこのmatplotlibのラッパーの位置づけです。かなり簡単に可視化ができるので是非使い方を覚えましょう。
▶ matplotlib , seabornによる可視化のまとめ記事は以下をご覧ください。
環境
- Windows10
- Python 3.9.7
- pandas 1.5.0
- numpy: 1.23.3
- matplotlib: 3.6.1
準備
サンプルーデータの準備
今回はseabornにあらかじめ準備されているニューヨークのタクシー乗車のデータを扱うことにしましょう。
# ライブラリのインポート
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
# データの読み込み
df = sns.load_dataset('taxis')
# 列を抽出
df = df[['pickup','passengers','distance','fare','tip','total','pickup_borough']]
df.head()
今回は読み込んだデータの一部しか使わないので、列項目を絞り込んでいます。このデータを使って早速プロットしていきましょう。
plot関数の書式
まずは書式を確認していきましょう。以下が基本的な書式になります。
たったこれだけです。これを基本形として、引数を指定するといろんなグラフを描画することができます。よく使う引数についてもまとめておきましょう。
引数 | 説明 |
kind | グラフの種類を指定(デフォルトはline) |
x | x軸の変数指定 |
y | y軸の変数指定 |
figsize | Figureオブジェクトの大きさの指定 |
subplots | 1つのFigureオブジェクトの中にサブプロットを描くかどうか |
layout | サブプロットの行数、列数の指定 |
sharex | x軸の範囲を共有するかどうか |
sharey | y軸の範囲を共有するかどうか |
title | グラフのタイトル |
grid | グリッドを表示するかどうか |
colormap | 色の指定 |
legend | 凡例を表示するかどうか |
alpha | 透過率 |
たくさんの引数がありますが、使っているうちに自然に覚えるので心配はいりません。はじめのうちは、この表を見ながら使いたいものを使う、というやり方で構いません。
では早速プロットしてみましょう。
pandasのplot関数で可視化
グラフの種類
グラフの種類は引数kindで指定することができます。kindで指定できる値は以下となります。
kindで指定する値 | グラフの種類 |
line | 折れ線グラフ |
bar | 垂直棒グラフ |
barh | 水平棒グラフ |
box | 箱ひげ図 |
hist | ヒストグラム |
kde or density | カーネル密度推定 |
area | 面グラフ |
scatter | 散布図 |
hexbin | 六角形ビニング図 |
pie | 円グラフ |
折れ線グラフ
まずは折れ線から描いていきましょう。kindのデフォルトは’line’なので省略しても折れ線グラフを描くことができます。まずはSeriesの場合からやってみましょう。
# Seriesにplot()を指定する
df['total'].plot()
Seriesの場合はインデックスがx軸となりSeriesが1本の折れ線で表示されます。これはkindに「line」を指定しても同じ結果が得られます。次にデータフレームの場合を試してみましょう。
# データフレームにplot()を指定する
df.plot()
df.plot()とするとインデックスがx軸となり数値の列が折れ線で描画されます。数値の列が複数あれば、複数の折れ線が表示されます。また、数値以外の列は無視されます。
こんな簡単なコードですごいですね!
さらに引数としてsubplots=Trueとすると複数のプロットを分離してサブプロットを描くことができます。
# サブプロット
df.plot(subplots=True)
簡単ですね。すごい!縦に並べるだけではなく、引数layoutを使うとサブプロットの行と列を指定できます。やってみましょう。
# layoutを指定
df.plot(subplots=True,layout=(3,2))
ここではlayout=(3,2)を指定したので、3行2列でサブプロット描かれました。これらがたっと1行のコードでできるって感動ですね。
棒グラフ
次に棒グラフを描いてみましょう。引数でkind=’bar’とすると棒グラフを描くことができます。
# fareとtipの列のみ抽出して棒グラフを描く
df_fare_tip = df[['fare','tip']]
df_fare_tip.plot(kind='bar')
fareとtipを合わせるとtotalとなります。横に並べるのではなく積み上げたくなりますよね。積み上げ棒グラフを描く場合は、stacked=Trueとします。
# 積み上げ棒グラフ
df_fare_tip.plot(kind='bar',stacked=True)
横棒グラフにしたい場合は、barの代わりにbarhを指定します。
# 横棒グラフ
df_fare_tip.plot(kind='barh',stacked=True)
ヒストグラム
同じ要領でどんどん描いていきましょう。次はヒストグラムです。
# ヒストグラム
df_fare_tip.plot(kind='hist')
箱ひげ図
# 箱ひげ図
df.plot(kind='box',subplots=True,layout=(2,3))
散布図
最後に散布図です。散布図の場合は、kind=’scatter’としてx軸とy軸も指定します。
# 散布図
df.plot(kind='scatter',x='fare',y='tip')
面グラフ
最後に面グラフも見ておきましょう。こちらもkindにareaを指定するだけです。
# 面グラフ
df.plot(kind='area')
どれも簡単ですね。気になる引数は値を指定するとどうなるのか、ご自身で試してみるとよいでしょう。
まとめ
今回はpandasのplot()関数でいろんなグラフを描いてみました。ちょっと引数を変えるだけで簡単にいろんなグラフが描けるだけでなく、比較しやすいようにレイアウトなども変更ができるので便利ですね。
コメント