Python 中的列联表

pythonserver side programmingprogramming

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

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

示例

在下面的例子中,我们以鸢尾花数据集进行分析。该数据集由三种鸢尾花(山鸢尾、维吉尼亚鸢尾和变色鸢尾)各 50 个样本组成。每个样本测量了四个特征:萼片和花瓣的长度和宽度(以厘米为单位)。我们将根据这些特征创建应急模型,最终用于区分各个物种。

读取数据集

示例

import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
print (datainput.head(5))

运行上述代码得到以下结果:

SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm 物种
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 中提供的交叉表函数,并将这两列的名称作为输入。

示例

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

相关文章