Python で分割表を作成する方法
分割表は、 2 つのカテゴリ変数間の関係を要約する表の一種です。
Python で分割表を作成するには、次の構文を使用するpandas.crosstab()関数を使用できます。
pandas.crosstab(インデックス、列)
金:
- Index:分割表の行に表示する変数の名前
- columns:分割表の列に表示する変数の名前
次のステップバイステップの例は、この関数を使用して Python で分割表を作成する方法を示しています。
ステップ 1: データを作成する
まず、購入した製品の種類 (テレビ、コンピュータ、ラジオ) や製品を購入した国 (A、B、または C) など、20 の異なる製品注文に関する情報を表示するデータセットを作成しましょう。
import pandas as pd #create data df = pd. DataFrame ({'Order': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 'Product': ['TV', 'TV', 'Comp', 'TV', 'TV', 'Comp', 'Comp', 'Comp', 'TV', 'Radio', 'TV', 'Radio', 'Radio', 'Radio', 'Comp', 'Comp', 'TV', 'TV', 'Radio', 'TV'], 'Country': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C']}) #view data df Order Product Country 0 1 TV A 1 2 TV A 2 3 Comp A 3 4 TV A 4 5 TV B 5 6 Comp B 6 7 Comp B 7 8 Comp B 8 9 TV B 9 10 Radio B 10 11 TV B 11 12 Radio B 12 13 Radio C 13 14 Radio C 14 15 Comp C 15 16 Comp C 16 17 TV C 17 18 TV C 18 19 Radio C 19 20 TV C
ステップ 2: 分割表を作成する
次のコードは、各国ごとに注文された各製品の数をカウントする分割表を作成する方法を示しています。
#create contingency table p.d. crosstab (index=df[' Country '], columns=df[' Product ']) Product Comp Radio TV Country A 1 0 3 B 3 2 3 C 2 3 3
表を解釈する方法は次のとおりです。
- 合計1 台のコンピューターが A 国で購入されました。
- B 国では合計3 台のコンピューターを購入しました。
- 合計2 台のコンピューターを C 国で購入しました。
- A 国で購入された無線機は合計0 台でした。
- 合計2 台のラジオを B 国で購入しました。
- C 国では合計3 台のラジオを購入しました。
- A国では合計3台のテレビを購入しました。
- B 国では合計3 台のテレビを購入しました。
- C 国では合計3 台のテレビを購入しました。
ステップ 3: 分割表にマージン合計を追加する
margins=True引数を使用して、マージンの合計を分割表に追加できます。
#add margins to contingency table p.d. crosstab (index=df[' Country '], columns=df[' Product '], margins= True ) Product Comp Radio TV All Country A 1 0 3 4 B 3 2 3 8 C 2 3 3 8 All 6 5 9 20
テーブルの値を解釈する方法は次のとおりです。
行の合計:
- A国から合計4件の注文がありました。
- 合計8件が B 国から注文されました。
- C国からは合計8件の注文がありました。
列の合計:
- 合計6台のパソコンを購入しました。
- 合計5台のラジオを購入しました。
- 合計9台のテレビを購入しました。
表の右下隅の値は、合計20 個の製品がすべての国から注文されたことを示しています。