如何在 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 种产品。

其他资源

如何在 R 中创建列联表
如何在 Excel 中创建列联表

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注