Python
 Computer >> コンピューター >  >> プログラミング >> Python

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
  1. 【Python】MatplotlibでテーブルをX軸に揃えて表示する方法

    はじめにデータ可視化において、グラフと表を組み合わせて表示すると、数値の詳細を視覚的にも分かりやすく伝えられます。Pythonのmatplotlibでは、plt.table()メソッドを活用することで、棒グラフのX軸部分にテーブルをきれいに配置できます。この記事では、積み上げ棒グラフの下部にテーブルをX軸に沿って揃えて表示する具体的な手順とコード例を解説します。実装手順図のサイズを設定し、サブプロット間および周囲のパディングを調整します。データフレーム用のデータリストを作成します。データフレームのcolumns(列名)に対応するタプルを作成します。rows(行ラベル)とvalues(値)のリス

  2. 【初心者向け】Pythonのissuperset()メソッドの使い方をわかりやすく解説

    はじめにこの記事では、Pythonのissuperset()メソッドについて、基本的な仕組みから実際のコード例まで詳しく解説します。issuperset()は、セット(集合)に対して使用できるメソッドで、引数として渡されたセットのすべての要素が、呼び出し元のセットに含まれているかどうかを判定します。呼び出し元のセットBが、引数のセットAのすべての要素を含んでいる場合 → True を返すセットAの要素がすべてBに含まれていない場合 → False を返すつまり、「BがAの上位集合(スーパーセット)であるかどうか」を判定するためのメソッドです。基本構文B.issuperset(A)この式は、Bが