Python中的列联表


列联表是一个表格,它以行显示一个变量的分布,以列显示另一个变量的分布。它用于研究两个变量之间的相关性。它是一个多维表,描述了一个数据集,其中每个观察值属于几个变量中的每一个类别。它基本上是两个或多个分类变量之间计数的汇总。列联表也称为交叉表或二维表,在统计学中用于总结几个分类变量之间的关系。

列联系数是一个关联系数,它说明两个变量或数据集是否相互独立或相互依赖,它也称为皮尔逊系数。

示例

在下面的示例中,我们采用鸢尾花数据集进行分析。该数据集包含来自三种鸢尾花物种(Iris setosa、Iris virginica和Iris versicolor)的50个样本。从每个样本中测量了四个特征:萼片和花瓣的长度和宽度(以厘米为单位)。我们将根据这些特征创建列联模型,最终用于区分不同物种。

读取数据集

示例

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

创建列联表

现在,我们为显示每个物种的花瓣宽度的列创建一个列联表。为此,我们使用pandas中可用的crosstab函数,并将这两列的名称作为输入。

示例

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

多变量列联表

在这种情况下,我们使用多于两列来创建列联表。这里我们使用每个物种的花瓣长度和花瓣宽度。

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

更新于:2019年12月30日

2K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告