ひばりログ

Apple関連やプログラミングなど趣味を書き綴る。

pandasを使ったmatplotlibでの棒グラフの作り方

データ作成

とりあえず、こんなデータを用意します。

data = pd.Series([0.1, 0.4, 0.5, 0.1, 0.3, 0.2, 0.9, 0.3, 0.1])
index data
0 0.1
1 0.4
2 0.5
3 0.1
4 0.3
5 0.2
6 0.8
7 0.3
8 0.1

必要なライブラリのインポート

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

データの集計

各データの個数を集計します。

data_count = data.value_counts()
index data
0.1 3
0.2 1
0.3 2
0.4 1
0.5 1
0.9 1

棒グラフの範囲となるxとyを定めます

x = np.arange(0.0, 1.0, 0.1)
y = pd.Series(index=x, data=data_count)

棒グラフを表示します

plt.bar(x, y, width=0.05)
plt.xticks(x)           
plt.show()

put.bar()で棒グラフを定義します。 widthは棒の太さを指定します。

xticksはx軸のラベルを指定します。

f:id:hibari2978:20190630123334p:plain
棒グラフ

うまく作れない場合

np.arange()で誤差が生じて、yのSeriesが全てNaNになってしまうことがあります。 そのときは

  1. xを丸める
x = np.arange(0.0, 1.0, 0.1)
x = x.round(2)
  1. linspaceを使う
x = np.linspace(0.0, 0.9, 10)

などの対策を取ることでうまく行く場合があります。