Pythonで身につける統計的思考 ― グラフとチャートによるデータ分析入門
統計学は、機械学習(ML)やAIを学ぶうえで欠かせない基礎知識です。これらの技術分野ではPythonが事実上の標準言語となっているため、統計分析を取り入れたPythonプログラムの書き方をマスターすることが重要になります。本記事では、さまざまなPythonライブラリを活用してグラフやチャートを作成する方法を解説します。多様なチャートを使いこなせるようになると、データを素早く分析し、結論を視覚的に導き出せるようになります。
データの準備
ここでは、さまざまな種子(シード)に関するデータを含むデータセットを使用します。このデータセットはKaggleから入手でき、URLは後述のサンプルコード内に記載しています。8つの列で構成されており、これらの列を使って異なる種子の特徴を比較する各種チャートを作成していきます。まず、ローカル環境からデータセットを読み込み、先頭の行を表示して中身を確認しましょう。
サンプルコード
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
datainput = pd.read_csv('E:\\seeds.csv')
#https://www.kaggle.com/jmcaro/wheat-seedsuci
print(datainput)
出力結果
上記のコードを実行すると、次のような結果が得られます。
Area Perimeter Compactness ... Asymmetry.Coeff Kernel.Groove Type 0 15.26 14.84 0.8710 ... 2.221 5.220 1 1 14.88 14.57 0.8811 ... 1.018 4.956 1 2 14.29 14.09 0.9050 ... 2.699 4.825 1 3 13.84 13.94 0.8955 ... 2.259 4.805 1 4 16.14 14.99 0.9034 ... 1.355 5.175 1 .. ... ... ... ... ... ... ... 194 12.19 13.20 0.8783 ... 3.631 4.870 3 195 11.23 12.88 0.8511 ... 4.325 5.003 3 196 13.20 13.66 0.8883 ... 8.315 5.056 3 197 11.84 13.21 0.8521 ... 3.598 5.044 3 198 12.30 13.34 0.8684 ... 5.637 5.063 3 [199 rows x 8 columns]
ヒストグラムの作成
ヒストグラムを作成するには、CSVファイルからヘッダー行を除いた状態でNumPy配列として読み込みます。ファイルの読み込みにはgenfromtxtモジュールを使用し、粒の長さ(Kernel_Length)は列インデックス3に位置します。最後にmatplotlibを使ってヒストグラムを描画し、軸ラベルなどの必要な装飾を加えます。
サンプルコード
import matplotlib.pyplot as plot
import numpy as np
from numpy import genfromtxt
seed_data = genfromtxt('E:\\seeds.csv', delimiter=',')
Kernel_Length = seed_data[:, [3]]
x = len(Kernel_Length)
y = np.sqrt(x)
y = int(y)
z = plot.hist(Kernel_Length, bins=y, color='#FF4040')
z = plot.xlabel('Kernel_Length')
z = plot.ylabel('values')
plot.show()
出力結果
上記のコードを実行すると、次のようなヒストグラムが表示されます。
経験的累積分布関数(ECDF)
ECDF(Empirical Cumulative Distribution Function:経験的累積分布関数)は、データセット全体における粒の溝(Kernel Groove)サイズの分布を示すチャートです。値を小さい順に並べ替え、累積的な分布として視覚化することで、データのばらつきや全体的な傾向を直感的に把握できます。
サンプルコード
import matplotlib.pyplot as plot
import numpy as np
from numpy import genfromtxt
seed_data = genfromtxt('E:\\seeds.csv', delimiter=',')
Kernel_groove = seed_data[:, 6]
def ECDF(seed_data):#経験的累積分布関数
i = len(seed_data)
m = np.sort(seed_data)
n = np.arange(1, i + 1) / i
return m, n
m, n = ECDF(Kernel_groove)
plot.plot(m, n, marker='.', linestyle='none')
plot.xlabel('Kernel_Groove')
plot.ylabel('Empirical cumulative distribution functions')
plot.show()
出力結果
上記のコードを実行すると、次のようなECDFプロットが表示されます。
ビースウォームプロット
ビースウォームプロット(Bee Swarm Plot)は、個々のデータポイントを重ならないように配置して視覚的にクラスタリングすることで、グループごとのデータ分布を表現するチャートです。このグラフの作成にはseabornライブラリを使用します。データセットのType列を基準にすることで、同じ種類の種子をまとめて比較表示できます。
サンプルコード
import pandas as pd
import matplotlib.pyplot as plot
import seaborn as sns
datainput = pd.read_csv('E:\\seeds.csv')
sns.swarmplot(x='Type', y='Asymmetry.Coeff',data=datainput, color='#458B00')#ビースウォームプロット
plot.xlabel('Type')
plot.ylabel('Asymmetry_Coeff')
plot.show()
出力結果
上記のコードを実行すると、次のようなビースウォームプロットが表示されます。
まとめ
本記事では、小麦の種子データセットを例に、Pythonによる統計的可視化の基本を紹介しました。pandasによるデータ読み込み、NumPyのgenfromtxtを使った配列操作、matplotlibによるヒストグラムやECDFの描画、そしてseabornによるビースウォームプロットまで、目的に応じて適切なチャートを選択することがデータ分析の第一歩です。これらの手法を組み合わせることで、機械学習モデルを構築する前にデータの特性を深く理解できるようになり、より精度の高い分析へとつながります。
-
Pythonで顧客離反(チャーン)を予測する方法:機械学習による実践ガイド
あらゆるビジネスは顧客のロイヤルティに依存しています。リピート購入は企業の収益性を支える重要な柱の一つであり、顧客が離れていく理由を把握することは極めて重要です。このように顧客が離反していく現象は「カスタマーチャーン(Customer Churn)」と呼ばれます。過去の傾向を分析することで、どのような要因が顧客離反に影響を与えているのかを把握し、特定の顧客が離反するかどうかを予測できるようになります。本記事では、機械学習アルゴリズムを使って過去の顧客離反データの傾向を分析し、どの顧客が離反する可能性が高いかを判定する方法を解説します。データの準備例として、通信業界(Telecom)の顧客離反デ
-
Pythonで国勢調査データを分析する方法|インドの人口統計データを可視化してみよう
国勢調査(センサス)とは、特定の対象人口に関する情報を体系的に記録・収集する取り組みです。収集されるデータには、人口統計、経済状況、居住環境など、さまざまなカテゴリの情報が含まれています。これらのデータは、政府が現状を正確に把握し、将来に向けた政策立案を行ううえで重要な基礎資料となります。本記事では、Pythonを活用してインドの国勢調査データを分析する方法を解説します。人口動態や経済指標など複数の観点からデータを掘り下げ、その結果をグラフとして視覚的に表現します。使用するデータセットはKaggleから入手した「India Districts Census 2011」です。データの準備と読み込


