欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Pandas实现数据统计指标

程序员文章站 2022-03-10 19:54:02
前言这篇文章主要复习一下用pandas库实现数据统计的一些方法,包括均值,上分位数,下分位数,以及缺失值的统计。1.数据统计指令1.1 求和指令对于DataFrame中的数据,统计是基于无NAN数据(求和操作中,NAN相当于0),求和指令如下:import pandas as pddf = pd.DataFrame([[1.4, np.nan], [7.1, -4.5], [np.nan, np.nan], [0.75, -1.3]],...

前言
这篇文章主要复习一下用pandas库实现数据统计的一些方法,包括均值,上分位数,下分位数,以及缺失值的统计。

1.数据统计指令

1.1 求和指令

对于DataFrame中的数据,统计是基于无NAN数据(求和操作中,NAN相当于0),求和指令如下:

import pandas as pd
df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],
                   [np.nan, np.nan], [0.75, -1.3]],
                  index=['a', 'b', 'c', 'd'],
                  columns=['one', 'two'])
df
df.sum() # 返回的是对于每一列数据和的Series数据
one 9.25
two -5.8

如果操作对象想转化为对每一行的数据进行求和操作,代码如下:

# 第一种表示方法
df.sum(axis = 1)
# 第二种表示方法
df.sum(axis = "columns")

1.2 均值指令

# 操作对象还是基于列
df.mean()
# 操作对象基于行
df.mean(axis = 1)
# 如果不想忽略NAN值,可以通过修改参数
df.mean(axis = 'columns', skipna = False)

1.3 返回最大(小)值的索引

df.idxmax() #返回每一列最大值的索引
df.idxmin() # 返回每一列最小值的索引

1.4 累积值统计

返回一个DataFrame, 是基于每一列的累加值返回

df.cumsum()

1.5 一次性产生多个数据统计

基于的对象还是DataFrame中的列

df.describe() # 可以一次性产生包括最小值,最大值,标准差等

2 计算相关系数和协方差

2.1 作用对象是Series

# 第一种表示方式
returns = pd.DataFrame([[1.5,1.6,1.7,1.8],
						[1.5,1.6,1.7,1.8],
						[1.5,1.6,1.7,1.8],
						[1.5,1.6,1.7,1.8]],
						index = ['a','b','c','d'], 
						columns = ['A','B','C','D'])
# 相关系数计算
returns['A'].corr(returns['B'])

# 协方差计算
returns['A'].cov(returns['B'])
# 第二种表示方式
returns.A.cov(returns.B)

2.2 作用对象是DataFrame

返回一个完整的DataFrame的协方差(相关系数)矩阵。

returns.cov() # 协方差矩阵
returns.corr() # 相关系数矩阵

corrwith()方法用于计算 DataFrame 和 Series 之间的相关系数。

# 这里DataFrame中的对象是列
returns.corrwith(returns.B)
# 改变作用对象为DataFrame中的行,与corrwith()中的Series进行相关系数计算
returns.corrwith(returns.B, axis = 1)

3 唯一值,统计频次

3.1 获取唯一值

有点类似于集合(在我的世界里,你就是唯一)。

obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
obj.unique()

3.2 统计数值频次

作用对象是Series, value_counts()中数据的维度必须是1,所以无法统计DataFrame。统计DataFrame中出现的频次使用的是apply函数。

obj.value_counts() # 出现的频次由高到低进行排序
# 也可以对值的字母顺序进行排序
pd.value_counts(obj.values, sort = False)

3.3 对数据进行过滤

操作对象为 Series 和 DataFrame 中的列。

obj2 = obj.isin(['b', 'c']) #返回布尔值的Series
obj[obj2] # 筛选出了元素为 'b','c'的Series

3.4 apply函数

对DataFrame中的数据频次进行统计。

data = pd.DataFrame({'Qu1': [1, 3, 4, 3, 4],
                     'Qu2': [2, 3, 1, 2, 3],
                     'Qu3': [1, 5, 2, 4, 4]})
result = data.apply(pd.value_counts).fillna(0)

本文地址:https://blog.csdn.net/weixin_43226196/article/details/107617586

相关标签: 数据分析 python