【Python】ヒストグラムを作成する。(Numpy,Matplotlib,Seaborn,Pandas)

ヒストグラムとは

ヒストグラムは、データセットの分布を視覚化するためのグラフの一つです。データをビンと呼ばれる区間に分割し、各ビンに含まれるデータの個数を縦軸に取り、ビンの範囲を横軸にとって表現します。ヒストグラムを作成することによって、データの分布や特徴を直感的に理解することができます。

Pythonでのヒストグラムの作成方法

PythonではNumpy、Matplotlib、Seaborn、Pandasなどのライブラリを使ってヒストグラムを作成することができます。ヒストグラムをデータ分析に使いたい場合はNumpy、ヒストグラムとしてデータを確認したい場合はMatplotlib、Seaborn、Pandasなどを使います。

Numpyのヒストグラム関数(np.histogram)とは

numpyのhistogram関数は、Numpyライブラリに含まれる関数で、ヒストグラムを作成するために使用されます。np.histogram関数は、データとビンの数を引数として受け取り、ビンの数に応じた階級にデータを分割して、各ビンに含まれるデータの数を計算します。np.histogram関数は、ビンの数、ビンの範囲、およびビンの幅を指定することができます。

np.histogram関数は、以下のように使用します。

import numpy as np

# データを用意する
data = np.random.randn(1000)

# ビンの数を指定する
bin_num = 50

# np.histogram関数を使用してヒストグラムを作成する
hist, bins = np.histogram(data, bins=bin_num)

# ヒストグラムの数値とビンの範囲を出力する
print(hist)
print(bins)

上記の例では、ランダムな値を生成して、それらの値を50個のビンに分割したヒストグラムを作成しています。np.histogram関数の第1引数にデータ、第2引数にビンの数を指定します。関数は、ヒストグラムの数値とビンの範囲を返します。出力されるヒストグラムの数値は、各ビンに含まれるデータの数を表し、ビンの範囲は、各ビンの範囲を表す数値のリストです。

実行結果:

[ 1  0  1  1  0  4  5  6 11 11 10 10 14 16 27 32 28 39 45 47 44 57 57 60 53 49 43 43 40 37 26 29 17 12 17 11 11  8  7  4  3  3  2  1  2  2  2  0  1]
[-3.30444079 -3.1619415  -3.01944221 -2.87694293 -2.73444364 -2.59194435 -2.44944507 -2.30694578 -2.16444649 -2.02194721 -1.87944792 -1.73694863 -1.59444935 -1.45195006 -1.30945077 -1.16695149 -1.0244522  -0.88195291 -0.73945363 -0.59695434 -0.45445505 -0.31195577 -0.16945648 -0.02695719  0.115542 0.25804198  0.40054127  0.54304056  0.68553984  0.82803913  0.97053842 1.11303771  1.25553799  1.39803728  1.54053657  1.68303585  1.82553514 1.96803443  2.11053371  2.253033    2.39553229  2.53803157  2.68053086 2.82303015  2.96552943  3.10802872]

上記の実行結果では、ランダムな値を生成して、それらの値を50個のビンに分割したヒストグラムを作成しています。hist変数は各ビンに属する要素の数を示し、bins変数はビンの境界値の配列を表しています。

Matplotlibライブラリを使ったヒストグラムの作成方法

Matplotlibのpyplotモジュールを使用すると、ヒストグラムを簡単に作成できます。以下は、ヒストグラムを作成するための基本的なステップです。

import numpy as np
import matplotlib.pyplot as plt

# ランダムな値を生成
np.random.seed(0)data = np.random.randn(1000)

# ヒストグラムを作成する
plt.hist(data, bins=50)

# グラフを表示
plt.show()

上記のコードで、ランダムな値を生成して、それらの値を50個のビンに分割したヒストグラムを作成しています。plt.hist()関数の第1引数にデータ、第2引数にビンの数を指定します。plt.show()関数でグラフを表示します。

Seabornライブラリを使ったヒストグラムの作成方法

Seabornライブラリは、Matplotlibライブラリをベースにした高度な可視化ライブラリです。Seabornを使用すると、Matplotlibよりも美しいグラフを作成することができます。以下は、Seabornライブラリを使ったヒストグラムの作成方法です。

import numpy as np
import seaborn as sns

# データを用意する
data = np.random.randn(1000)

# ヒストグラムをプロット
sns.histplot(data, bins=50)

# グラフを表示
plt.show()

上記のコードで、ランダムな値を生成して、それらの値を50個のビンに分割したヒストグラムを作成しています。sns.histplot()関数の第1引数にデータ、第2引数にビンの数を指定します。plt.show()関数でグラフを表示します。

Pandasライブラリを使ったヒストグラムの作成方法

Pandasライブラリは、データの分析や処理を容易にするために設計されたライブラリです。以下は、Pandasライブラリを使ったヒストグラムの作成方法です。

import pandas as pd
  
# データを読み込む
data = pd.read_csv('data.csv')  

# ヒストグラムをプロット
data.hist(bins=50)  

# グラフを表示
plt.show()

上記のコードで、CSVファイルからデータを読み込んで、それらの値を50個のビンに分割したヒストグラムを作成しています。data.hist()関数の第1引数にビンの数を指定します。plt.show()関数でグラフを表示します。

ヒストグラムを使ったデータ解析

ヒストグラムは、データ分布を可視化するために非常に役立ちます。以下は、ヒストグラムを使ったデータ解析の例です。

データ分布の可視化

以下は、あるウェブサイトの1日あたりの訪問者数を表すデータを想定した例です。

import matplotlib.pyplot as plt
import numpy as np

# データを用意する
data = np.random.normal(50, 10, 10000)

# ヒストグラムを作成する
plt.hist(data, bins=50)

# グラフの設定をする
plt.title('Daily Visitors')
plt.xlabel('Visitors')
plt.ylabel('Frequency')

# グラフを表示する
plt.show()

上記のコードで、平均値が50、標準偏差が10の正規分布に従うデータを生成し、50個のビンに分割したヒストグラムを作成しています。plt.title()関数でグラフのタイトル、plt.xlabel()関数でX軸のラベル、plt.ylabel()関数でY軸のラベルを設定しています。

データの集計

以下は、ある商品の価格を表すデータセットを使用した例です。

import pandas as pd
import matplotlib.pyplot as plt

# データを用意する
data = pd.read_csv('prices.csv')
prices = data['price']

# ヒストグラムを作成する
plt.hist(prices, bins=50)

# グラフの設定をする
plt.title('Price Distribution')
plt.xlabel('Price')
plt.ylabel('Frequency')

# グラフを表示する
plt.show()

上記のコードでは、Pandasライブラリを使用してCSVファイルからデータを読み込み、50個のビンに分割したヒストグラムを作成しています。plt.title()関数でグラフのタイトル、plt.xlabel()関数でX軸のラベル、plt.ylabel()関数でY軸のラベルを設定しています。

ビン幅の調整

以下は、あるテストの得点を表すデータセットを使用した例です。

import matplotlib.pyplot as plt
import numpy as np

# データを用意する
np.random.seed(0)
data = np.random.normal(50, 10, 10000)

# ビン幅を変更してヒストグラムを作成する
plt.hist(data, bins=np.arange(0, 100, 5))

# グラフの設定をする
plt.title('Test Scores')
plt.xlabel('Score')
plt.ylabel('Frequency')

# グラフを表示する
plt.show()

上記のコードでは、ビン幅を5に変更してヒストグラムを作成しています。np.arange()関数でビンの範囲を指定しています。

異常値の検出

以下は、ある商品の価格を表すデータセットを使用した例です。

import pandas as pd
import matplotlib.pyplot as plt

# データを用意する
data = pd.read_csv('prices.csv')
prices = data['price']

# ヒストグラムを作成する
plt.hist(prices, bins=50)

# グラフの設定をする
plt.title('Price Distribution')
plt.xlabel('Price')
plt.ylabel('Frequency')

# 異常値を表示する
plt.axvline(x=1000, color='r')

# グラフを表示する
plt.show()

上記のコードでは、異常値を赤い垂直の線で表示しています。異常値がどのようにヒストグラム上に現れるかを見ることができます。

ヒストグラムの注意点と改善方法

ヒストグラムを作成する際には、以下の点に注意する必要があります。

ビン幅の設定方法

ビン幅が小さい場合は、ヒストグラムが細かくなり、データの詳細な分布が見えますが、ビン幅が大きい場合は、ヒストグラムが粗くなり、データの詳細な分布が見えにくくなります。ビン幅の設定方法については、データセットの性質や解析目的に応じて慎重に選択する必要があります。

異常値の扱い方

ヒストグラムでは、異常値が存在する場合、異常値がどのように分布しているかを確認することができます。異常値を除外するかどうかは、データセットや解析目的によって異なります。

軸ラベル、タイトル、凡例の設定方法

グラフの軸ラベル、タイトル、凡例は、データの理解を助けるために非常に重要です。適切なラベルやタイトルを設定することで、グラフを見た人がすぐにデータの特徴を理解することができます。

まとめ

Pythonを使ってヒストグラムを作成することは、データ分析の重要な一部です。ヒストグラムを使って、データの分布や特徴を直感的に理解することができます。Matplotlib、Seaborn、Pandasなどのライブラリを使うことで、簡単にヒストグラムを作成することができます。ビン幅や異常値の扱い方には注意が必要ですが、適切な設定をすることで、データ解析に役立てることができます。

コメント

タイトルとURLをコピーしました