如何在 python 中创建列联表
列联表是一种总结两个分类变量之间关系的表。
要在 Python 中创建列联表,我们可以使用pandas.crosstab()函数,该函数使用以下语法:
pandas.crosstab(索引,列)
金子:
- 索引:要在列联表的行中显示的变量的名称
- columns:要在列联表的列中显示的变量名称
以下分步示例演示了如何使用此函数在 Python 中创建列联表。
第 1 步:创建数据
首先,我们创建一个数据集,显示有关 20 种不同产品订单的信息,包括购买产品的类型(电视、计算机或收音机)以及购买产品的国家/地区(A、B 或 C):
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
以下是如何解释该表:
- 在A国总共购买了1台电脑。
- 在B国总共购买了3台电脑。
- 在C国总共购买了2台电脑。
- A国总共购买了0台收音机。
- B国总共购买了2台收音机。
- 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个订单。
- B国总共下了8个订单。
- C国总共下了8个订单。
列总计:
- 一共购买了6台电脑。
- 一共购买了5台收音机。
- 一共购买了9台电视机。
表格右下角的数值显示,总共从所有国家订购了20 种产品。