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
广告