pythonでグラフを書く際には、matplotlibを基本として、seabornやplotly,bokehを使ったりしますが、実はpandasでも簡単なグラフを書くことができます。サクッと超簡単に書きたい場合には有用と思いますので、使い方をまとめます。
この記事でわかること
・pandasを使った超簡単なグラフ作成方法がわかる
・matplotlibを使うまでもない簡単な可視化の方法がわかる
共通部分
padasと、サンプルデータ作成用にnumpyもインポートします。
import pandas as pd
import numpy as np
折れ線グラフの書き方
pandasを使ったコードは以下の通りです。
# サンプルデータ作成
df = pd.DataFrame({
'x': np.linspace(0, 10, 100),
'y': np.sin(np.linspace(0, 10, 100))
})
# 折れ線グラフの描画(pandas)
df.plot(x='x', y='y')
棒グラフの書き方
# サンプルデータ作成
data = {'fruits': ['apple', 'banana', 'cherry'],
'count': [10, 20, 15]}
df = pd.DataFrame(data)
# 棒グラフの描画
df.plot.bar(x='fruits', y='count', rot=0)
ヒストグラムの書き方
# サンプルデータ作成
df = pd.DataFrame({'values': np.random.randn(1000)})
# ヒストグラムの描画
df['values'].plot.hist(bins=50)
箱ひげ図の書き方
# サンプルデータ作成
df = pd.DataFrame({
'A': np.random.randn(1000),
'B': np.random.rand(1000)
})
# 箱ひげ図の描画
df.boxplot(column=['A', 'B'])
散布図の書き方
# サンプルデータ作成
df = pd.DataFrame({
'A': np.random.randn(100),
'B': np.random.randn(100)
})
# 散布図の描画
df.plot.scatter(x='A', y='B')
pandasとmatplotlibの比較
matplotlibを使用した場合を折れ線グラフで比較してみましょう。matplotlibのコードは下記の通りです。どちらも余計なコードは書かずに、出来るだけシンプルに記載しています。画像はpandas版と横に並べて比較してみました。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# サンプルデータ作成
df = pd.DataFrame({
'x': np.linspace(0, 10, 100),
'y': np.sin(np.linspace(0, 10, 100))
})
# 折れ線グラフの描画(pandas)
#df.plot(x='x', y='y') #コード比較用。
# 折れ線グラフの描画(matplotlib)
plt.plot(df['x'], df['y'])
ほとんど見た目は同じですが、pandas版と比較すると、matplotlibはx軸名とyの凡例がありません。もちろん、コードを追加することで追加は可能ですが、ちょっとしたグラフをすぐに書きたいときには、pandas版の方が簡単かつ分かりやすいグラフになることがわかりました。
まとめ
pandasで主要なグラフを書く方法をまとめました。また、matplotlibと比較すると、pandasの方が少ないコードで、軸名と凡例など最低限の情報が表示できることがわかりました。
#コード比較
# 折れ線グラフの描画(pandas)
df.plot(x='x', y='y')
# 折れ線グラフの描画(matplotlib)
plt.plot(df['x'], df['y'])
以上、参考になれば幸いです。