python之数据分析pandas(5)
前言
数据分析主要还是通过一些数学方法统计结合可视化来进行的,今天我们学习一下pandas的数据统计函数,来进行进一步的数据分析。主要有汇总类统计、唯一去重和按值计数、相关系数和协方差。
开始
我们还是用的上次的天气的数据,读取数据之后,把温度的“℃”单位去掉,把温度的类型转换为‘int32’类型,和以前的步骤一样。然后开始我们的统计学习。
汇总类统计
汇总统计的函数有describe()函数,将数据分析之后,输出它们的有效数据行(count)、平均数(mean)、方差(std)、最小值(min)、第一四分位数(25%)、第二四分位数(50%)、第三数分位数(75%)和最大数(max)。
df.describe() # 提取所有数字列统计结果
我们将df数据对象通过describe()函数统计后就回更加直观的能够反映数据的一些特征。分位数和数学统计的概念一样,四分位数(Quartile)是统计学中分位数的一种,即把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数(来自百度百科)。25%就是所有数据的第25%个位置的那个数字,其他也一样。
我们还可以查看单个的数据特征,直接进行引用就可以了。
df["bWendu"].mean() # 查看单个Series的平均数据(bWendu)
# 18.665753424657535
df["bWendu"].max() # 最高温
# 38
df["bWendu"].min() # 最低温
# -5
唯一去重和按值计数
在我们的生活中数据重复是最正常不过的事情了,有时候我们需要查看统计结果,就需要对数据进行去重。因此pandas提供了unique()函数去重。
唯一性去重
一般不用于数值列,而是枚举、分类列。
df["fengxiang"] #不进行去重的输出结果。
0 东北风
1 东北风
2 北风
3 东北风
4 西北风
...
360 西北风
361 西北风
362 西北风
363 东北风
364 东北风
df["fengxiang"].unique() #进行去重的输出结果。
array(['东北风', '北风', '西北风', '西南风', '南风', '东南风', '东风', '西风'], dtype=object)
当直接输出时是一个series类型结果,但是当我们进行去重之后就变成了一个array数组类型展示。
按值计数
按值计数主要是统计该变量出现的次数,通过value_counts()方法进行统计。
df["fengxiang"].value_counts() # 统计"fengxiang"这个列标签中各种风向出现的次数。
南风 92
西南风 64
北风 54
西北风 51
东南风 46
东北风 38
东风 14
西风 6
由输出的结果可以看出南风出现的次数是最多的,就说明刮南风的天数是最多的,然后依次按降序进行了排序。
df["fengli"].value_counts()
1-2级 236
3-4级 68
1级 21
4-5级 20
2级 13
3级 7
其他的也可以进行统计分析。
相关系数和协方差
这个是不是很熟悉,今年概率论我们就学习了协方差,相关系数应该是高中就进行了学习,然后我们还可以在编程中进行运用。
协方差:用于衡量两个变量的总体误差。衡量同向反向程度,如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高。
相关系数:衡量相似度程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,当相关系数为-1时,说明两个变量变化的反向相似度最大
(来自知乎)
概率论中协方差是cov,而在pandas中也是通过cov()函数进行计算。
df.cov() # 协方差矩阵
bWendu yWendu aqi aqiLevel
bWendu 140.613247 135.529633 47.462622 0.879204
yWendu 135.529633 138.181274 16.186685 0.264165
aqi 47.462622 16.186685 2697.364564 50.749842
aqiLevel 0.879204 0.264165 50.749842 1.060485
我们发现自己跟自己的协方差是最大的,但是我们一般不这样分析,哈哈哈。
相关系数在pandas中使用corr()函数进行计算。
df.corr() # 相关系数矩阵
bWendu yWendu aqi aqiLevel
bWendu 1.000000 0.972292 0.077067 0.071999
yWendu 0.972292 1.000000 0.026513 0.021822
aqi 0.077067 0.026513 1.000000 0.948883
aqiLevel 0.071999 0.021822 0.948883 1.000000
通过相关系数,我们能够很容易的看出两个变量之间的相关性,自己和自己的相关性最高为1,从结果中也能够看出bWendu和yWendu的相关性是最高的,有着很大的关系。当然,也可以查看单个的相关系数,我们就来看看空气质量aqi与最高温度bWndu的相关性。
df["aqi"].corr(df["bWendu"]) # 单独查看空气质量和最高温度的相关系数
# 0.07706705916811077
df["aqi"].corr(df["yWendu"])
# 0.02651328267296879
df["aqi"].corr(df["bWendu"]-df["yWendu"]) # 空气质量和温差的相关系数
# 0.21652257576382047
如果只想查看单个的,我们就可以用这种方法。然后,我们将0.21/0.02,输出结果10.5,这个方法就是特征工程对于机器学习重要性的一个例子。感兴趣的可以了解一下。
结尾
今天是第五天了,感谢大家的阅读,希望多多指教,共同学习。