データフレームにデータを読み込むことができれば、基本統計量や相関行列を求めるのは簡単です。目標1で見たカリフォルニアの住宅価格データを使って以下のような統計量を求めてみましょう。
基本統計量はデータフレームのdescribeメソッドを使えば求められます。また、相関行列もデータフレームのcorrメソッドを使えば求められます。コードを書いて実行するだけでなく、得られた結果についても考察してみてください。
データフレームのdescribeメソッドは、データの個数や平均値、標準偏差、四分位数などの基本統計量を全て返してくれます。住宅価格データを読み込んで、基本統計量を表示しましょう(リスト15、図9)。
import pandas as pd
df = pd.read_csv('./sample_data/california_housing_train.csv')
df.describe()
図9 リスト15の実行結果(住宅価格データの基本統計量)基本統計量の値を見ただけでは、データの特徴はあまり分からないかもしれませんが、データの件数(count)と最小値(min)、最大値(max)をざっと見ておきましょう。標本のサイズや値の範囲が分かります*2。第1四分位数はデータ全体を小さいものから順に並べたときに、先頭から1/4つまり25%の位置にある値のことです。第3四分位数なら3/4つまり75%の位置にある値となります。
*2 件数の異なる列がある場合、欠損値が存在します。ただし、全ての列の件数が同じであっても、欠損値が存在しないとは言い切れないことに注意してください。全ての列に同じ数の欠損値があるかもしれないからです。df.isnull().sum()とすれば、各列の欠損値の個数が求められます。
また、平均値(mean)と中央値(50%)も比較しておくと分布の特徴がある程度分かります。中央値はデータ全体を小さいものから順に並べたときにちょうど真ん中にある値のことですね。
となっています。平均値と中央値がほぼ等しい場合は中心に山のある正規分布……と言いたいところですが、必ずしもそうとは限りません。一様分布でも平均値と中央値はほぼ等しくなりますし、左と右の両方に山がある分布でも平均値と中央値がほぼ等しくなることがあります。従って、数値だけを見て結論に飛びつくのではなく、ヒストグラムや散布図などを作成して全体像を確認しておく必要があります。が、それは次の目標にすることとして、先に相関行列を求めておきましょう。
相関行列は、データフレームのcorrメソッドで求められます(リスト16、図10)。
# リスト15の続きに入力する
df.corr()
図10 リスト16の実行結果(住宅価格データの相関行列)相関行列を見れば、それぞれの項目の関係がある程度分かります。相関係数が1に近い正の値の場合は、一方の項目の値が大きくなれば、他方の項目の値も大きくなるということです。逆に、-1に近い負の値の場合は、一方の項目の値が大きくなれば、他方の項目の値は小さくなるということです。
例えば、経度(longtitude)と緯度(latitude)に高い負の相関が見られますが、これはカリフォルニア州が左上から右下に位置する「\」のような形になっているからです。経度が小さくなれば(西=左に行くと)、緯度は大きくなります(北=上に行く)。部屋数と寝室数に正の相関があるのは当然ですね。世帯収入と住宅価格に正の相関があるのもうなずけます。寝室数と住宅価格の相関係数は0に近いので、これらにはあまり関係がなさそうです(超豪邸はある程度大きな住宅でも、多くの場合、寝室数は1つです)。
すでに述べたように、数字を見ただけでは分かりにくいデータの特徴もあります。そこで、次の目標3ではデータの可視化を行いましょう。
Copyright© Digital Advantage Corp. All Rights Reserved.