【4.7.1】Pandas中常用的统计分析
一.数据的基本统计分析
适用于Series和DataFrame类型
方法 说明
.sum() 计算数据的总和,按0轴计算,下同
.count() 非NaN值的数量
.mean() .median() 计算数据的算术平均值、算术中位数
.var() .std() 计算数据的方差、标准差
.min() .max() 计算数据的最小值、最大值
.argmin() .argmax() 计算数据最大值、最小值所在位置的索引位置(自动索引)
.idxmin() .idxmax() 计算数据最大值、最小值所在位置的索引(自定义索引)
.describe() 针对0轴(各列)的统计汇总
案例:
import pandas as pd
import numpy as np
a= pd.Series([9,8,7,6],index=['a','b','c','d'])
print a
a 9
b 8
c 7
d 6
dtype: int64
print a.describe()
count 4.000000
mean 7.500000
std 1.290994
min 6.000000
25% 6.750000
50% 7.500000
75% 8.250000
max 9.000000
dtype: float64
print type(a.describe())
<class 'pandas.core.series.Series'>
print a.describe()['count']
4.0
print a.describe()['max']
9.0
案例:
import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
print b
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
print b.describe()
0 1 2 3 4
count 4.000000 4.000000 4.000000 4.000000 4.000000
mean 7.500000 8.500000 9.500000 10.500000 11.500000
std 6.454972 6.454972 6.454972 6.454972 6.454972
min 0.000000 1.000000 2.000000 3.000000 4.000000
25% 3.750000 4.750000 5.750000 6.750000 7.750000
50% 7.500000 8.500000 9.500000 10.500000 11.500000
75% 11.250000 12.250000 13.250000 14.250000 15.250000
max 15.000000 16.000000 17.000000 18.000000 19.000000
print type(b.describe())
<class 'pandas.core.frame.DataFrame'>
print b.describe().ix['max']
0 15.0
1 16.0
2 17.0
3 18.0
4 19.0
Name: max, dtype: float64
print b.describe()[2]
count 4.000000
mean 9.500000
std 6.454972
min 2.000000
25% 5.750000
50% 9.500000
75% 13.250000
max 17.000000
Name: 2, dtype: float64
二、数据的累计分布
适用于Series和DataFrame类型,累计计算
方法 说明
.cumsum() 依次给出前1、2、...、n个数的和
.cumprod() 依次给出前1、2、...、n个数的积
.cummax() 依次给出前1、2、...、n个数的最大值
.cummin() 依次给出前1、2、...、n个数的最小值
案例:
import pandas as pd
import numpy as np
b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
print b
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
print b.cumsum()
0 1 2 3 4
c 0 1 2 3 4
a 5 7 9 11 13
d 15 18 21 24 27
b 30 34 38 42 46
print b.cumprod()
0 1 2 3 4
c 0 1 2 3 4
a 0 6 14 24 36
d 0 66 168 312 504
b 0 1056 2856 5616 9576
print b.cummin()
0 1 2 3 4
c 0 1 2 3 4
a 0 1 2 3 4
d 0 1 2 3 4
b 0 1 2 3 4
print b.cummax()
0 1 2 3 4
c 0 1 2 3 4
a 5 6 7 8 9
d 10 11 12 13 14
b 15 16 17 18 19
适用于Series和DataFrame类型,滚动计算(窗口计算)
.rolling(w).sum() 依次计算相邻w个元素的和
.rolling(w).mean() 依次计算相邻w个元素的算术平均值
.rolling(w).var() 依次计算相邻w个元素的方差
.rolling(w).std() 依次计算相邻w个元素的标准差
.rolling(w).min() .max() 依次计算相邻w个元素的最小值和最大值
案例:
print b.rolling(2).sum()
0 1 2 3 4
c NaN NaN NaN NaN NaN
a 5.0 7.0 9.0 11.0 13.0
d 15.0 17.0 19.0 21.0 23.0
b 25.0 27.0 29.0 31.0 33.0
print b.rolling(3).sum()
0 1 2 3 4
c NaN NaN NaN NaN NaN
a NaN NaN NaN NaN NaN
d 15.0 18.0 21.0 24.0 27.0
b 30.0 33.0 36.0 39.0 42.0
三.数据的相关分析
两个事物,表示为X和Y,如何判断它们之间的存在相关性? 相关性
- X增大,Y增大,两个变量正相关
- X增大,Y减小,两个变量负相关
- X增大,Y无视,两个变量不相关
协方差
两个事物,表示为X和Y,如何判断它们之间的存在相关性?
- 协方差>0, X和Y正相关
- 协方差<0, X和Y负相关
- 协方差=0, X和Y独立无关
Pearson相关系数
两个事物,表示为X和Y,如何判断它们之间的存在相关性?
r取值范围[‐1,1]
- 0.8‐1.0 极强相关
- 0.6‐0.8 强相关
- 0.4‐0.6 中等程度相关
- 0.2‐0.4 弱相关
- 0.0‐0.2 极弱相关或无相关
方法 说明
.cov() 计算协方差矩阵
.corr() 计算相关系数矩阵, Pearson、Spearman、Kendall等系数
案例:
import pandas as pd
import numpy as np
a1 = pd.Series([3,4,6,8],index = ['a','b','c','d'])
a2 = pd.Series([4,5,7,8],index = ['a','b','c','d'])
print a1.corr(a2)
0.988064363511
参考资料:
北京理工大学 嵩山 www.python123.org
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn