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