1 常用统计函数:

df['xxx'].mean() # 均值
df.mean().mean() # 全体平均数
df[xxx'].median() # 中位数
df[xxx'].var() # 方差
df[xxx'].std() # 标准差
max(),min() # 最大(小)值

2 diff()函数:计算上下行差值:

# 方法一:Series.diff()
df['xxx'].diff()# 方法二:shift(1)
diff = df['xxx'] - df['xxx'].shift(1)

3 pct_change()函数:计算上下行变化率:

# 方法一:Series.pct_change()
df['xxx'].pct_change()# 方法二:shift(1)
df['xxx']/df['xxx'].shift(1) - 1

4 shft()函数:将数据往后(前)移动x天:

shift(x)
shift(-x)

5 rolling()函数:以5个数据作为滑动窗口,取均值/总和:

df['xxx'].rolling(5).mean()
df['xxx'].rolling(10).sum()
# 应用:将收盘价5日均线、20日均线与原始数据绘制再同一个图上#方法一:
mean_5 = data['收盘价(元)'].rolling(5).mean()
mean_20 = data['收盘价(元)'].rolling(20).mean()font = {'family':'MicroSoft YaHei', 'weight':'bold', 'size': 12}
matplotlib.rc('font', **font)plt.rc('figure', figsize=(16,6), dpi=150) #设置图的大小
plt.plot(data['收盘价(元)'], label='原始数据')
plt.plot(mean_5, label='5日均线')
plt.plot(mean_20, label='20日均线')plt.legend(loc='upper right')
plt.show()#方法二:
data['收盘价(元)'].plot()
data['收盘价(元)'].rolling(5).mean().plot()
data['收盘价(元)'].rolling(20).mean().plot()

6 expanding()函数:

DataFrame.expanding(min_periods = 1,center = False,axis = 0)

# 计算某列的移动窗口均值:
df['xxx'].expanding(min_periods = 1).mean()

rolling()函数,是固定窗口大小,进行滑动计算,expanding()函数只设置最小的观测值数量,不固定窗口大小,实现累计计算,即不断扩展;

Pandas进阶之窗口函数rolling()和expanding():https://www.jianshu.com/p/b8c795345e93

7 agg()函数:

(1)同时对xx1, xxx2两列进行计算:

df[['xxx1', 'xxx2']].agg([np.sum, np.mean, np.median, np.min, np.max, np.std, np.var])
df[['xxx1', 'xxx2']].agg(['sum', 'mean', 'median', 'min', 'max', 'std', 'var'])

(2)对'xxx1'列求平均,对'xxx2'列求和:

# 方法一:分开再汇总
salary_mean = df['salary'].mean()
score_sum = df['score'].sum()
salary_mean, score_sum# 方法二:agg()函数
df.agg({'xxx1' : np.sum, 'xxx2' : np.mean})

8 分组计算:

(1)根据某列元素分组后计算平均值/中位数:

df.groupby('xxx').mean()
df.groupby('xxx').median()

(2)按'xxx1'分组后,'xxx2'列元素最多的是:

# 方法一:head()取行
df[['xxx1', 'xxx2']].groupby('xxx1').sum().sort_values(by='xxx2', ascending=False).head(1)# 方法二:iloc取行
pd.DataFrame(df[['xxx1', 'xxx2']].groupby('xxx1').sum().sort_values(by='xxx2', ascending=False).iloc[0,:])# 方法三:分组后采用agg函数求和
df[['xxx1', 'xxx2']].groupby('xxx1').agg({'xxx2':'sum'}).sort_values(by='xxx2', ascending=False).head(1)

(3)自定义函数修正日期:

def change_year(x):year = x.year - 100 if x.year > 1999 else x.yearreturn datetime.date(year, x.month, x.day)df['Yr_Mo_Dy'] = df['Yr_Mo_Dy'].apply(change_year).astype('datetime64[ns]')
df.head()

9 query()函数:df.query('month == 1')等同于df[df.month==1]

(1)计算一月份('month ==1')的平均值:

df['date'] = df.indexdf['year'] = df['date'].apply(lambda x: x.year)
df['month'] = df['date'].apply(lambda x: x.month)
df['day'] = df['date'].apply(lambda x: x.day)january_df = df.query('month==1')  #query等同于df[df.month==1]
january_df.mean()

(2)按年为频率取样:

df.query('month == 1 and day == 1')

(3)按月为频率取样:

df.query('day == 1')

六、数据(分组)计算相关推荐

  1. python中数据分组计算_python3数据聚合与分组运算(二)

    数据聚合 对于聚合,这里指的是任何能够从数组产生标量值的数据转换过程.之前的例子中已经用过一些,比如mean.count.min以及sum等.我们可能想知道在GroupBy对象上调用mean()时究竟 ...

  2. pbi 度量值计算列+日期表+层次结构+数据分组+交互式分析+横向纵向可视化选择+轴、图例、值拖拽

    目录 一.度量值和计算列 二.日期表 三.层级结构 1.直接拖 2.创建层次结构 四.数据分组 1.知晓分组规则 2.不知晓分组规则 五.交互式分析 1.第一个按钮 无,不与其它图形进行交互 2.层次 ...

  3. python数据科学包第三天(索引、分组计算、数据聚合、分组运算和转换、载入数据、日期范围、数据可视化)

    索引 行索引 列索引 索引的分类 重复索引的处理 s = pd.Series(np.random.rand(5), index=list('abcde')) s a 0.566924 b 0.6034 ...

  4. 如何使用熵值法分组计算核心指标权重,并为项目打分

    计算核心指标权重是一种常见的分析方法,常见的计算权重的方法的原理及使用条件可参考https://baijiahao.baidu.com/s?id=1661019965038118642&wfr ...

  5. 【大数据实时计算框架】Storm框架

    一.大数据实时计算框架 1.什么是实时计算?流式计算? (一)什么是Storm? Storm为分布式实时计算提供了一组通用原语,可被用于"流处理"之中,实时处理消息并更新数据库.这 ...

  6. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  7. python库学习笔记——分组计算利器:pandas中的groupby技术

    最近处理数据需要分组计算,又用到了groupby函数,温故而知新. 分组运算的第一阶段,pandas 对象(无论是 Series.DataFrame 还是其他的)中的数据会根据你所提供的一个或多个键被 ...

  8. pandas(七) -- 数据分组

    数据分组官方文档 分组统计 - groupby功能 根据某些条件将数据拆分成组 对每个组单独使用函数 将结果合并到一个数据结构中 根据单列或多列分组 .groupby() 分组后的对象执行数值计算函数 ...

  9. 机器学习实战(十)利用K-means算法对未标注数据分组

    第十章 利用K-means算法对未标注数据分组 10.1 K-均值聚类算法 10.2 使用后处理来提高聚类性能 10.3 二分K-均值算法 10.4 总结 第十章 利用K-means算法对未标注数据分 ...

最新文章

  1. linux ss 命令简介 端口连接查看 代替netstat
  2. 网站添加自己公司的地图(使用的百度地图)时只显示一个空白框
  3. oracle数据库教程-张晨光-专题视频课程
  4. matlab 树状链表,多级树集合分裂(SPIHT)算法的过程详解和Matlab实现(5)编码过程——精细扫描...
  5. C语言课程学籍管理课程书面报告,C语言学籍管理系统课程设计报告书
  6. 图像还可以这样玩!如何用OpenCV处理图像?
  7. php怎样加速,php 提速
  8. Vue「五」—— 动态组件、插槽、自定义指令
  9. 获取div中的内容写法
  10. SpringAOP 学习笔记
  11. 华为rh5885服务器oid_高性能全冗余 华为RH5885 V3服务器解析
  12. MIDAS GTS NX在高边坡工程中的应用
  13. 电子科技大学格拉斯哥学院英文教材使用效果
  14. Android Glide清除缓存图片 你可能不知道
  15. 团队分享心得体会_团队合作心得体会总结
  16. Unity DOTS Burst 运行分析
  17. FIFA Women's World Cup France 2019™ -国际足协继海奶奶女子世足杯曲终人散,USA碰杯
  18. Windows一键清空回收站
  19. 使用Scanner收集你的身高体重,并用三目运算符判断BMI的范围
  20. “学习金字塔”理论的一个应用

热门文章

  1. error: resource style/Theme.AppCompat.Light.NoActionBar
  2. DNSPod十问董文辉:我们为什么要拥抱云原生安全?
  3. Allegro通孔电气焊盘
  4. android7 es文件,让你更了解你的手机 – ES 文件管理器 #Android
  5. JavaScript知识之正则表达式(RegExp)
  6. MySQL 最新版行政区划
  7. 为什么运放一般要反比例放大?
  8. 在Vue里使用G2地图制作省级地图展示各市级数据
  9. 用pyecharts画地图(世界地图、中国省级地图、市级地图、某省市级地图、某市县级地图)
  10. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛 E 赛马 python