Pythonで分割表(クロス集計表)を作成する方法
分割表(コンティンジェンシーテーブル)とは、一方の変数を行に、もう一方の変数を列に配置してその分布を示した表のことです。2つの変数間の相関関係を調べるために用いられ、各観測値が複数の変数それぞれについて1つのカテゴリに属するデータセットを記述する多次元表でもあります。本質的には、2つ以上のカテゴリ変数間の出現回数を集計したものであり、「クロス集計表(クロスタブ)」や「二重分割表」とも呼ばれます。統計学において、複数のカテゴリ変数間の関係を要約するために広く使用されています。
また、分割係数(コンティンジェンシー係数)は連関係数の一種で、2つの変数またはデータセットが互いに独立しているか、それとも従属関係にあるかを示す指標です。ピアソンの係数としても知られています。
例:アヤメ(Iris)データセットによる分析
以下の例では、アヤメの花のデータセットを使用して分析を行います。このデータセットは、3種類のアヤメ(Iris setosa、Iris virginica、Iris versicolor)からそれぞれ50サンプルずつ、合計150件で構成されています。各サンプルからは、がく片の長さ・幅、花びらの長さ・幅という4つの特徴量がセンチメートル単位で測定されています。これらの特徴量をもとに分割表を作成し、最終的に品種同士を識別できるようにしていきます。
データセットの読み込み
コード例
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
print (datainput.head(5))上記のコードを実行すると、次のような結果が得られます。
SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 0 5.1 3.5 1.4 0.2 Iris-setosa 1 4.9 3.0 1.4 0.2 Iris-setosa 2 4.7 3.2 1.3 0.2 Iris-setosa 3 4.6 3.1 1.5 0.2 Iris-setosa 4 5.0 3.6 1.4 0.2 Iris-setosa
データの基本統計量を確認する
次に、describe() メソッドを使ってデータの基本統計量を確認します。これにより、平均値や四分位数など、データがどのように分布しているのかを把握することができます。
コード例
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
print(datainput.describe())上記のコードを実行すると、次のような結果が得られます。
SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm count 150.000000 150.000000 150.000000 150.000000 mean 5.843333 3.054000 3.758667 1.198667 std 0.828066 0.433594 1.764420 0.763161 min 4.300000 2.000000 1.000000 0.100000 25% 5.100000 2.800000 1.600000 0.300000 50% 5.800000 3.000000 4.350000 1.300000 75% 6.400000 3.300000 5.100000 1.800000 max 7.900000 4.400000 6.900000 2.500000
データ型の確認
続いて、データフレーム内の各列のデータ型を確認します。
コード例
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
print(datainput.dtypes)上記のコードを実行すると、次のような結果が得られます。
SepalLengthCm float64 SepalWidthCm float64 PetalLengthCm float64 PetalWidthCm float64 Species object dtype: object
分割表の作成
ここでは、花びらの幅(PetalWidthCm)と品種(Species)の列を使って分割表を作成します。pandas に用意されている crosstab 関数を使用し、これら2つの列名を引数として渡します。
コード例
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
width_species = pd.crosstab(datainput['PetalWidthCm'],datainput['Species'],margins = False)
print(width_species)上記のコードを実行すると、次のような結果が得られます。
Species Iris-setosa Iris-versicolor Iris-virginica PetalWidthCm 0.1 6 0 0 0.2 28 0 0 0.3 7 0 0 1.0 0 7 0 1.1 0 3 0 1.2 0 5 0 1.8 0 1 11 1.9 0 0 5 2.0 0 0 6 2.1 0 0 6 2.5 0 0 3
多変量の分割表
さらに、3つ以上の列を組み合わせて分割表を作成することもできます。ここでは、花びらの長さ(PetalLengthCm)と花びらの幅(PetalWidthCm)の両方を品種ごとに集計してみましょう。
import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
length_width_species = pd.crosstab([datainput.PetalLengthCm, datainput.PetalWidthCm],datainput.Species, margins = False)
print(length_width_species)上記のコードを実行すると、次のような結果が得られます。
Species Iris-setosa Iris-versicolor Iris-virginica PetalLengthCm PetalWidthCm 1.0 0.2 1 0 0 1.1 0.1 1 0 0 1.2 0.2 2 0 0 1.3 0.2 4 0 0 0.3 2 0 0 ... ... ... ... 6.4 2.0 0 0 1 6.6 2.1 0 0 1 6.7 2.0 0 0 1 2.2 0 0 1 6.9 2.3 0 0 1
-
【Python】MatplotlibでテーブルをX軸に揃えて表示する方法
はじめにデータ可視化において、グラフと表を組み合わせて表示すると、数値の詳細を視覚的にも分かりやすく伝えられます。Pythonのmatplotlibでは、plt.table()メソッドを活用することで、棒グラフのX軸部分にテーブルをきれいに配置できます。この記事では、積み上げ棒グラフの下部にテーブルをX軸に沿って揃えて表示する具体的な手順とコード例を解説します。実装手順図のサイズを設定し、サブプロット間および周囲のパディングを調整します。データフレーム用のデータリストを作成します。データフレームのcolumns(列名)に対応するタプルを作成します。rows(行ラベル)とvalues(値)のリス
-
【初心者向け】Pythonのissuperset()メソッドの使い方をわかりやすく解説
はじめにこの記事では、Pythonのissuperset()メソッドについて、基本的な仕組みから実際のコード例まで詳しく解説します。issuperset()は、セット(集合)に対して使用できるメソッドで、引数として渡されたセットのすべての要素が、呼び出し元のセットに含まれているかどうかを判定します。呼び出し元のセットBが、引数のセットAのすべての要素を含んでいる場合 → True を返すセットAの要素がすべてBに含まれていない場合 → False を返すつまり、「BがAの上位集合(スーパーセット)であるかどうか」を判定するためのメソッドです。基本構文B.issuperset(A)この式は、Bが