文章目录
1、数学和统计方法
统计方法
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(1,20,size=(6,2)),
index=list('qwerty'),
columns=['C++', 'Math'])
df
df['C++'].argmax() # 返回最大值索引顺序
df['C++'].idxmax() # 返回最大值值的索引value
df.cummax() # 累计最大值
df.cummin() # 累计最小值
df.cumprod() # 累乘
df.cumsum() # 累加
df.diff() # 差分,当前数据减去上一个的差值
df.pct_change().round(1) # 环比增加百分比 2012/2011 - 1
df.cov() # 协方差
df.std() # 标准差
df.corr() # 求相关系数
df.corrwith(df['Math'])
排序
df.sort_index(axis=0)
df.sort_values(by='C++', ascending=False)
df.sort_values(by = ['C++','Math'],ascending=True)
# 先根据'C++'进行排序,如果相等在根据'Math'排序
df.nlargest(3, columns='Math') # 根据Math找到前n大的数
df.nsmallest
2、分箱
什么是分箱?
就是把连续数据切分成离散区间,例如考试分数,按及格、优秀统计;按每十分区间统计
df = pd.DataFrame(np.random.randint(0,100,(50,2)),
columns=['语文', '数学'])
df.head()
等距分箱
pd.cut(df['数学'][:5],
bins=10, # 等宽度分成10份
labels=['0-10','10-20','20-30','30-40','40-50',
'50-60','60-70','70-80','80-90','90-100',],
right = True) # 区间,闭区间)
# 索引0的同学 是50-60区间
df['status'] = pd.cut(
df['语文'],
bins=[0,60,80,90,100], # 自己设置区间
labels=['不及格','及格','优秀', '天才']
)
等频数分箱,每个箱子拥有相同的记录数
df['qcut'] = pd.qcut(
df['数学'],
q=5,
labels=None
)
df.qcut.value_counts()
# 把0-100分平均分成5份,差不多20分为一个箱子
3、分组聚合
分组
就是根据分类变量来分组统计
df = pd.DataFrame(data = {
'Sex':np.random.randint(0,2,size = 30),
'Class':np.random.randint(1,3