社会人が統計学の基礎を学び、実務で活かす

Pythonでヒストグラムを描く[Pandas, matplotlib.pyplot](Pythonによる統計学)

スポンサーサーチ

統計解析やデータ分析を行う際は「データを可視化すること」が非常に重要です。

ある変数の分布を調べたい時はヒストグラムを描くのが有効です。
それによって、平均値や中央値を見ているだけでは分からない
データがどのようにバラついているか、などを理解することができます。

今回はPythonを用いてヒストグラムを描く方法を紹介します。

まずは、Pandasライブラリを用いて、データフレームを作成しましょう。
その前に、必要なライブラリをインポートします。

import pandas as pd  # データフレームを作成するライブラリ 
import random # 乱数を発生させるライブラリ
import numpy as np #数値計算を行うためのライブラリ
import matplotlib.pyplot as plt # ヒストグラムを作成するライブラリ

まずは、100人分の身長をランダムに発生させ、hというベクトルに格納しましょう。
初めの50人は男性と考えて、平均171cm、標準偏差6cmの正規分布から、
残りの50人は女性と考えて、平均158cm、標準偏差5cmの正規分布から、
データを発生させてみます。

なお正規分布については「正規分布とは何か?期待値、分散、例」で詳しく解説しています。

以下では、np.random.seed(10)を指定することにより、
毎回、同じデータが生成されるようにしました。

np.random.seed(10)
h = np.round([np.random.normal(171, 6, 50)]+[np.random.normal(158, 5, 50)],1)
h = h.flatten().tolist()

100個数字を発生させたので、全部は載せませんがprint()関数を用いて発生した数字を確認できます。

>>> print(h)
[179.0, 175.3, 161.7, 170.9, 174.7, 166.7, 172.6, 171.7, 171.0, 170.0, 173.6, 178.2, 165.2, 177.2, 172.4, …. ]

次にpandasのデータフレームをmydataと名付け、データフレームを作成します。

idと名付けた列は1から100までid番号を振ります。
genderと名付けた列は「男性 male」を表すMと「女性 female」を表すFを50人づつ。
そして、身長の列「height」には上で発生させた身長を入れます。

mydata = pd.DataFrame({
                    'id' :list(range(1, 101)),
                    'gender':np.repeat(np.array(["M","F"]), [50,50]).tolist(),
                    'height':h
})

以下のコマンドでHTML形式でデータフレームを出力することができます。
今回はhead(5)とtail(5)を利用して初めと終わりの5行づつを出力しましょう。

>>> pd.DataFrame.to_html(mydata.head(5))
>>> pd.DataFrame.to_html(mydata.tail(5))

gender height id
0 M 179.0 1
1 M 175.3 2
2 M 161.7 3
3 M 170.9 4
4 M 174.7 5
gender height id
95 F 162.6 96
96 F 155.6 97
97 F 158.4 98
98 F 162.1 99
99 F 148.2 100

それでは早速、ヒストグラムを描いてみます。
身長(height)のヒストグラムは以下のコマンドで描くことができます。

# column='height'で変数を指定。
# bins=10でヒストグラムの帯の数を指定。
mydata.hist(column='height', bins=10)

コード内でbins=を指定することにより、ヒストグラムの帯の数を指定できます。
もっと細かく20個の帯になるように指定してみましょう。

mydata.hist(column='height', bins=20)

また、by = mydata[“gender”]により男女別(gender別)にヒストグラムを描くことも可能です。

mydata.hist(column='height', bins=10, by = mydata["gender"])

他の手法としては、matplotlib.pyplotを利用して、
ヒストグラムを作成することも可能です。

最初に作成したベクトルhのヒストグラムを描いてみます。

# matplotlib.pyplotを利用して作成

plt.hist(h)
plt.title('Height by using matplotlib.pyplot') 


プログラミングとソフトウェア

スポンサー募集中。

統計ドットリンクでは広告出稿をご希望のスポンサー様を募集しております。ページビューなどは、「お問い合わせ」からご連絡ください。

更新・勉強会などの情報を受け取る。

以下からFacebookページをフォローもしくは、メールマガジンへの登録をすると、更新情報、勉強会、講習会、交流会の案内など各種情報を受け取ることができます。

↑こちらからFacebookページをフォロー。
 

メルマガ登録はこちら

理系の就職・職業訓練

統計ドットリンクでは、理系の大学生、大学院生、第二新卒の就職や転職を応援しています。職業訓練、求人やエージェントなどの必要な情報を選別し、紹介しています。 就職、職業訓練の情報を確認する。
PAGETOP
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.