pandas 库提供了很多的函数,而且这些函数的应用在数据分析时是非常有用的,数据统计函数是 pandas 数据结构中最常用的数据操作之一。
- 汇总类统计
- 唯一去重和按值计算
- 相关系数和协方差
首先读取一份数据
import pandas as pd
pd.set_option('display.unicode.ambiguous_as_wide', True) #处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True) #无法对齐主要是因为列标题是中文
df=pd.read_csv(r'data\sh600000.csv',encoding='gbk')
df.set_index('交易日期',inplace=True) #设置索引为日期,方便按日期筛选
df.index
print(df.head(10))

1、汇总类统计
#一下子提取所有数字列统计结果
result=df.describe()
print(result)

当然也可以查看单个列的数据,例如我要查看‘最高价’这一列的最大值、最小值、平均值
#一下子提取所有数字列统计结果
df.describe()
result_max=df['最高价'].max()
print(f'最高价这一列的最大值为:{result_max}')
result_min=df['最高价'].min()
print(f'最高价这一列的最小值为:{result_min}')
result_mean=df['最高价'].mean()
print(f'最高价这一列的平均值为:{result_mean}')

pandas 常用的统计函数见表
函数 | 功能 |
df.count() | 求非 NA 值的数量 |
df.max() | 求最大值 |
df.min() | 求最小值 |
df.sum(axis=0) | 按各列求和 |
df.mean() | 按各列求平均值 |
df.median() | 求中位数 |
df.describe() | 按各列返回基本统计量和分位数 |
df.var() | 求方差 |
df.std() | 求标准差 |
df.mad() | 根据平均值计算平均绝对利差 |
df.cumsum() | 求累计和 |
df.size() :只返回分组字段的出现次数,说白了就是查看分组后每组的数量。(size 计数时包含 NaN 值)
df.count():求非NaN 值的数量,把每一列的值都返回出现的次数。( count 不包含 NaN值)
2、唯一去重和按值计算, (唯一去重) :一般不用于数列值,而是分类列,例如我有一列数据为等级,分为:初级、中级、高级…..,使用这个函数:
df['等级'].unique()
通过这个函数我们就知道这一列的全部取值有哪些
按值计算
df['等级'].value_counts()
这个函数可以统计出该列有多少个取值的数量
3、相关系数和协方差
用途,例如:
两支股票,是不是同涨同跌?程度多大?正相关还是负相关?
产品销量的波动,跟那些因素正相关,负相关,程度有多大?
来自知乎,对于两个变量X,Y
协方差:衡量同向反向程度,如果协方差为正,说明X,Y同向变化。协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高。
相关系数:衡量相似程度,当他们的相关系数为1时,说明两个变量变化是的正向相似度最大,当相关系数为-1时,说明两个变量的反向相似度最大
#协方差矩阵
df.cov()
#相关系数矩阵
df.corr()
例如我想知道最高价和成交量的相关系数
result=df['最高价'].corr(df['成交量'])
print(result)
得到的结果是:-0.08905755229271135