2.数学和统计方法
🚩pandas对象拥有一组常用的数学和统计方法。它们属于汇总统计,对Series汇总计算获取mean、max值或者对DataFrame行、列汇总计算返回一个Series。
2.1 简单统计指标
创建数据:
import numpy as np import pandas as pd df = pd.DataFrame(data = np.random.randint(0, 100,size = (20, 3)), index = list('ABCDEFHIJKLMNOPQRSTU'), columns = ['Python', 'Tensorflow', 'Keras']) df
我们现在来把一部分数据设置为空:
def convert(x): if x > 80: return np.NaN else: return x df['Python'] = df['Python'].map(convert) df['Tensorflow'] = df['Tensorflow'].apply(convert) df['Keras'] = df['Keras'].transform(convert) df
现在我们想知道到底有多少个空数据,我们可以自己去数,但这显然是低效的方法,使用 count() 函数可以直接去统计有多少个非空数据:
df.count() # 统计非空数据的个数
我们重新来构造数据:
import numpy as np import pandas as pd df = pd.DataFrame(data = np.random.randint(0, 100,size = (20, 3)), index = list('ABCDEFHIJKLMNOPQRSTU'), columns = ['Python', 'Tensorflow', 'Keras']) df
使用 median() 可以计算数据的中位数:
df.median() # 中位数
display(df.quantile(q = 0.5)) # 返回位于数据 50% 位置的数 display(df.quantile(q = 0.8)) # 返回位于数据 80% 位置的数
我们也可以使用如下的方法实现同样的效果:
df.quantile(q = [0.5, 0.8])
2.2 索引标签、位置获取
display(df['Python'].argmin()) # 计算最小值位置 display(df['Keras'].argmax()) # 最大值位置
display(df.idxmax()) # 最大值索引标签 display(df.idxmin()) # 最小值索引标签
索引就是自然数,标签就是我们初始设置的 ABCD…,索引和标签是一一对应的,如 0 对应的就是 A
2.3 更多统计指标
创建数据:
import numpy as np import pandas as pd df = pd.DataFrame(data = np.random.randint(0, 5,size = (20, 3)), index = list('ABCDEFHIJKLMNOPQRSTU'), columns = ['Python', 'Tensorflow', 'Keras']) df
使用 value_counts() 可以统计元素出现的次数:
# 统计元素出现次数 df['Python'].value_counts()
使用 unique() 可以实现去重:
# 去重 df['Python'].unique()
调用 cumsum() 实现累加,调用 cumprod() 实现累乘:
# 累加 display(df.cumsum()) # 累乘 display(df.cumprod())
cummin() 的作用是累计最小值,即碰到更小的数后,该数往后所有数都变成这个更小的数,cummax() 的作用是累计最大值,即碰到更大的数后,该数往后所有的数都变成这个更大的数:
# 累计最小值 display(df.cummin()) # 累计最大值 display(df.cummax())
计算标准差调用 std(),计算方差调用 var()
# 计算标准差 display(df.std()) # 计算方差 display(df.var())
计算差分使用 diff(),差分就是这一行减上一行的结果,计算百分比的变化使用 pct_change():
# 计算差分 # 差分:和上一行相减 display(df.diff()) # 计算百分比变化 display(df.pct_change())
2.4 高级统计指标
我们使用 cov() 和 corr() 用来分别计算协方差和相关性系数:
协方差:
相关性系数:
# 属性的协方差 display(df.cov()) # Python和Keras的协方差 display(df['Python'].cov(df['Keras']))
# 所有属性相关性系数 display(df.corr()) # 单一属性相关性系数 display(df.corrwith(df['Tensorflow']))