0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

生データ(raw data)のカテゴリーデータからグラフを作る - グルーピング

Last updated at Posted at 2022-07-28

目的

月ごとに利用者数を折れ線グラフで表現したい。

使用するデータ

SIGNATEさんの練習問題として公開されている「レンタル自転車の利用者予測」 のtrain dataを使います。

データの構成

月を表す'mnth'と利用者数を表す'cnt'を使ってグラフを作ります。その前にデータを確認しましょう。

1月から12月まで数字が入っているか確認します

print(df['mnth'].value_counts()) 

データの件数と利用者数の件数(合計人数ではない)が一致するか確認します。

print(df['cnt'].count())

誤ったグラフの作り方

グラフを作るために

import matplotlib.pyplot as plt

を実行して、変数をそのまま投入します。

x = df['mnth']
y = df['cnt']
plt.plot(x,y)

あれっ?思っていない出力でグラフが描かれました。
Graph_NoGrouping.png

困りました・・・

正しいグラフの作り方 - グルーピング

X軸に月を持ってきたいので、月を連続データではなくカテゴリーのような働き方をさせるために、1から12をそれぞれグループにします。

df2 = df.groupby('mnth').sum()

これを実行して1月から12月までをIndexに作ります。こんなイメージです。

Graph_Grouping.png

表側に1から12まで並んでいます。'mnth'を月ごとに合算したことになっています。利用者数'cnt'も1月から12月まで合算されています。

これでグラフを作成します。

import matplotlib.pyplot as plt

# monthをグルーピング(グルーピングしたmonthはindex)
df2 = df.groupby('mnth').sum()

x = df2.index #これがgroupbyした'mnth'です。
y = df2['cnt']
plt.plot(x,y)

グラフの出力も期待していた通りです。
Graph_Grouping_2.png

まとめ

X軸で表現したデータが数値の時は、グルーピング(groupby)しましょう。

groupby('グルーピングしたい変数名')

そしてgroupbyの後に何をしたいのか書く事も必要です。今回はグルーピングして合計を出したいので

groupby('グルーピングしたい変数名').sum()

というように書きます。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?