【pandas】pythonでmatplotlibを使わずにグラフを書く方法

【pandas】pythonでmatplotlibを使わずにグラフを書く方法

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'])

以上、参考になれば幸いです。