Python数据分析与展示:pandas库统计分析函数-13

举报
彭世瑜 发表于 2021/08/14 00:18:17 2021/08/14
【摘要】 基本的统计分析函数 适用于Series和DataFrame类型 方法说明.sum()计算数据的总和,按0轴计算,下同.count()非NaN值的数量.mean() .median()计算数据的算术平均值、算术中位数.var() .std()计算数据的方差、标准差.min().max()计算数据的最小值、最大值.describe()针对0轴(各列)的统计汇总 适用于...

基本的统计分析函数

适用于Series和DataFrame类型

方法 说明
.sum() 计算数据的总和,按0轴计算,下同
.count() 非NaN值的数量
.mean() .median() 计算数据的算术平均值、算术中位数
.var() .std() 计算数据的方差、标准差
.min().max() 计算数据的最小值、最大值
.describe() 针对0轴(各列)的统计汇总

适用于Series类型

方法 说明
.argmin() .argmax() 计算数据最大值、最小值所在位置的索引位置(自动索引)
.idxmin() .idxmax() 计算数据最大值、最小值所在位置的索引(自定义索引)

数据的累计统计分析

适用于Series和DataFrame类型,累计计算

方法 说明
.cumsum() 依次给出前1、2、…、n个数的和
.cumprod() 依次给出前1、2、…、n个数的积
.cummax() 依次给出前1、2、…、n个数的最大值
.cummin() 依次给出前1、2、…、n个数的最小值

适用于Series和DataFrame类型,滚动计算(窗口计算)

方法 说明
.rolling(w).sum() 依次计算相邻w个元素的和
.rolling(w).mean() 依次计算相邻w个元素的算术平均值
.rolling(w).var() 依次计算相邻w个元素的方差
.rolling(w).std() 依次计算相邻w个元素的标准差
.rolling(w).min() .max() 依次计算相邻w个元素的最小值和最大值

数据的相关性分析

两个事物,表示为X和Y,如何判断它们之间的存在相关性?

相关性

•X增大,Y增大,两个变量正相关
•X增大,Y减小,两个变量负相关
•X增大,Y无视,两个变量不相关

协方差

•协方差>0, X和Y正相关
•协方差<0, X和Y负相关
•协方差=0, X和Y独立无关

pearson相关系数

0.8‐1.0 极强相关
•0.6‐0.8 强相关
•0.4‐0.6 中等程度相关
•0.2‐0.4 弱相关
•0.0‐0.2 极弱相关或无相关
r取值范围[‐1,1]

适用于Series和DataFrame类型

方法 说明
.cov() 计算协方差矩阵
.corr() 计算相关系数矩阵, Pearson、Spearman、Kendall等系数

pandas数据特征分析小结

一组数据的摘要

方法 说明
排序 .sort_index() .sort_values()
基本统计函数 .describe()
累计统计函数 .cum*() .rolling().*()
相关性分析 .corr() .cov()

代码实例

# -*- coding: utf-8 -*-

# @File : pandas_func.py
# @Date : 2018-05-20

# pandas基本的统计分析函数

import pandas as pd
import numpy as np

# Series对象
s = pd.Series([9, 8, 7, 6], index=["a", "b", "c", "d"])
print(s)
"""
a 9
b 8
c 7
d 6
dtype: int64
"""

# 数据概要
print(s.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(s.describe()))
# <class 'pandas.core.series.Series'>

# 从概要中取数据
print(s.describe()["count"])
# 4.0

print(s.describe()["max"])
# 9.0

# DataFrame对象
fd = pd.DataFrame(np.arange(12).reshape(3, 4), index=["a", "b", "c"])
print(fd)
""" 0  1   2   3
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
"""

# 概要
print(fd.describe())
""" 0 1 2 3
count  3.0  3.0   3.0   3.0
mean   4.0  5.0   6.0   7.0
std 4.0  4.0   4.0   4.0
min 0.0  1.0   2.0   3.0
25% 2.0  3.0   4.0   5.0
50% 4.0  5.0   6.0   7.0
75% 6.0  7.0   8.0   9.0
max 8.0  9.0  10.0  11.0
"""

# 类型
print(type(fd.describe()))
# <class 'pandas.core.frame.DataFrame'>

# 取出列概要信息
print(fd.describe()[2])
"""
count 3.0
mean 6.0
std 4.0
min 2.0
25% 4.0
50% 6.0
75% 8.0
max 10.0
Name: 2, dtype: float64
"""

# 获取行
print(fd.describe().ix["count"])
"""
0 3.0
1 3.0
2 3.0
3 3.0
Name: count, dtype: float64
"""

# 数据的累计统计分析

print(fd)
""" 0  1   2   3
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
"""

# 依次给出前1、2、…、n个数的和
print(fd.cumsum())
""" 0   1   2   3
a   0   1   2   3
b   4   6   8  10
c  12  15  18  21
"""

# 依次给出前1、2、…、n个数的积
print(fd.cumprod())
""" 0   1 2 3
a  0   1 2 3
b  0   5   12   21
c  0  45  120  231
"""

# 依次给出前1、2、…、n个数的最大值
print(fd.cummax())
""" 0  1   2   3
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
"""

# 依次给出前1、2、…、n个数的最小值
print(fd.cummin())
""" 0  1  2  3
a  0  1  2  3
b  0  1  2  3
c  0  1  2  3
"""

print(fd)
""" 0  1   2   3
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
"""

# 相邻2个数求和
print(fd.rolling(2).sum())
""" 0 1 2 3
a   NaN   NaN   NaN   NaN
b   4.0   6.0   8.0  10.0
c  12.0  14.0  16.0  18.0
"""

# 相邻3个数求和
print(fd.rolling(3).sum())
""" 0 1 2 3
a   NaN   NaN   NaN   NaN
b   NaN   NaN   NaN   NaN
c  12.0  15.0  18.0  21.0
"""

# 实例,房价增幅与M2增幅的相关性
hprice = pd.Series([3.04, 22.93, 12.75, 22.6, 12.33], index=["2008", "2009", "2010", "2011", "2012"])
m2 = pd.Series([8.18, 18.38, 9.13, 7.82, 6.69], index=["2008", "2009", "2010", "2011", "2012"])

print(hprice.corr(m2))
# 0.5239439145220387
"""
## pearson相关系数
0.8‐1.0 极强相关 
•0.6‐0.8 强相关 
•0.4‐0.6 中等程度相关 
•0.2‐0.4 弱相关 
•0.0‐0.2 极弱相关或无相关
"""

# 绘制成图
from matplotlib import pyplot as plt

plt.plot(hprice)
plt.plot(m2)
plt.savefig("price", dpi=600)
plt.show()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195

这里写图片描述

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/80387231

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。