在利用python进行业务数据分析时,往往需要使用pandas计算环比、同比及增长率等指标,为了能够更加方便的进行的统计数据,整理方法如下。

1.数据准备

为方便进行演示,此处提前生成需要进行统计的数据,数据已经是按照时间维度进行排序。

months = pd.date_range(start='2010-01-01', end='2020-12-31', freq='M')
test_df = pd.DataFrame({'month': months,'v': 100*np.random.rand(months.shape[0], 1).reshape(months.shape[0])})

2.环比计算

2.1 方法1

test_df['v_last']=test_df['v'].shift(1)
test_df['month_erlier_1']=test_df['v']/test_df['v_last']-1

2.2 方法2

test_df['m_m_diff']=test_df['v'].diff()
test_df['month_erlier_2']=test_df['m_m_diff']/test_df['v'].shift(1)

2.3 方法3

test_df['month_erlier_3']=test_df['v'].pct_change()

3.同比计算

继续使用上述构建的数据源进行计算。

3.1 方法1

test_df["last_year_v"]=test_df['v'].shift(12)
test_df['year_erlier_1']=test_df['v']/test_df['last_year_v']-1

3.2 方法2

test_df["year_diff"]=test_df['v'].diff(12)
test_df['year_diff'].fillna(0,inplace=True)
test_df['year_erlier_2']=test_df['year_diff']/(test_df['v']-test_df['year_diff'])

3.3 方法3

test_df['year_erlier_3']=test_df["v"].pct_change(periods=12)

4.关于pct_change()函数

pct_change主要涉及一下参数:

  • periods=1,用来设置计算的周期。
  • fill_method=‘pad’,如何在计算百分比变化之前处理缺失值(NA)。
  • limit=None,设置停止填充条件,即当遇到填充的连续缺失值的数量n时,停止此处填充
  • freq=None,从时间序列 API 中使用的增量(例如 ‘M’ 或 BDay())

4.1 使用例子1

#构建数据
months = pd.date_range(start='2020-01-01', end='2020-12-31', freq='M')
test_df2 = pd.DataFrame({'month': months,'v': 100*np.random.rand(months.shape[0], 1).reshape(months.shape[0])})
test_df2.loc[((test_df2.index>5) & (test_df2.index<9) ),'v']=np.nan
test_df2.loc[test_df2.index==3,'v']=np.nan
test_df2.loc[test_df2.index==10,'v']=np.nan

数据展示:

计算环比:

#向下进行填充,当连续缺失值的数量大于2时不进行填充
test_df2['v'].pct_change(1,fill_method='ffill',limit=2)

计算效果图:

4.2 使用例子2

# 生成样本数据
test_df3 = pd.DataFrame({'2020': 100*np.random.rand(5).reshape(5),'2019': 100*np.random.rand(5).reshape(5),'2018':  100*np.random.rand(5).reshape(5)})

样本数据截图:

计算同环比:

test_df3.pct_change(axis='columns',periods=-1)

计算效果截图:

4.3 使用例子3

#构建数据样本
months = pd.date_range(start='2020-01-01', end='2020-12-31', freq='M')test_df4 = pd.DataFrame({'v': 100*np.random.rand(months.shape[0], 1).reshape(months.shape[0])}, index=months)

数据样本截图:

计算季度末环比:

test_df4["v"].pct_change(freq="Q")

计算效果图:

计算过程解释:
2020-03-31行处的值:使用3月份和1月份进行环比,即55.717305/84.492806-1
2020-06-30行处的值:使用6月份和3月份进行环比

5.后记

以上就是时候用pandas进行计算同比和环比的方法,请在使用过程中,结合数据情况先进行数据清洗后,再选择合适的方法进行计算。

如何利用python中的pandas模块计算环比和同比相关推荐

  1. Python中的pandas模块学习

    本文是基于Windows系统环境,学习和测试pandas模块: Windows 10 PyCharm 2018.3.5 for Windows (exe) python 3.6.8 Windows x ...

  2. 在Ubuntu 16.04.5 LTS上利用python中的PIL模块压缩一百多兆的单张图片实操

    在前面的博文中,我将300多张电影海报拼接为了一张103MB的巨幅图片,我想拿它做电脑桌面(1080P),但是这么多的图片,存储和加载是个麻烦事儿,需要将它压缩到几MB大小. 在Ubuntu 16.0 ...

  3. 利用python中的gzip模块压缩和解压数据流和文件

    直接给出源码实现, 分为两种情况: 1.网络连接中的数据流的压缩和解压,或是打开的文件读取一部分 2.打开文件压缩或是解压 #!/usr/bin/env python #encoding: utf-8 ...

  4. python doc转docx_利用python中的win32com模块将doc文件转为docx文件

    简介 win32com模块的功能也是非常的强大的,能够处理各种的文件 word操作 如何使用python的win32com模块实现将doc类型文件转成docx类型的文件 import os from ...

  5. 利用python中的zipfile模块进行解压缩

    文章目录 一.主要使用代码: 二.详解 1.压缩文件的基本信息 2.解压文件 本文主要说解压的问题 一.主要使用代码: #导入模块 import zipfile #压缩包所在路径 file_dir=' ...

  6. python中的sympy模块求导和解方程

    利用python中的sympy模块求导和解方程 对sympy这个模块我不是很了解,我学习python主要是想往机器学习和深度学习方向发展.这次了解到有这个模块,是因为有同学在写论文中要用到求导,并且计 ...

  7. 计算圆周率可以根据公式如下:请利用Python提供的itertools模块,我们来计算这个序列的前N项和——python

    1. 题目: ' 计算pi的值 的方法如下' # step 1: 创建一个奇数序列: 1, 3, 5, 7, 9, ...# step 2: 取该序列的前N项: 1, 3, 5, 7, 9, ..., ...

  8. python保存变量sklearn.externals_如何利用python中的sklearn.externals 模块保存加载训练模型...

    前提:在做模型训练的时候,尤其是在训练集上做交叉验证,通常想要将模型保存下来,然后放到独立的测试集上进行测试,本文主要介绍如何利用python中的sklearn.externals 模块保存训练模型, ...

  9. python中的numpy模块

    参考  python中的numpy模块 - 云+社区 - 腾讯云 目录 NumPy 教程 学习本教程前你需要了解 NumPy 应用 相关链接 NumPy 安装 1.使用已有的发行版本 2.使用 pip ...

  10. 利用python中的xlrd和xlwt操作excel

    微信公众号:数据运营人 本系列为博主的读书学习笔记,如需转载请注明出处. 当提起数据处理,一般情况下我们都可以用python中的pandas完成,但是当我们发现一些不规则的excel数据,所谓不规则如 ...

最新文章

  1. Fastadmin管理Mysql_FastAdmin-CMS模版制作(6)-正式部署
  2. python列表修改数据_使用列表理解修改数据框架列
  3. C语言类型转换大学霸IT达人
  4. (function() {})();和(function(){}())
  5. terminate和quit导致串口资源被占用
  6. 如何在 ASP.NET Core 中使用 LazyCache
  7. mysql normsinv_在MySQL中实现NORMSINV函数
  8. 我擦 以后在也不乱去听别人讲座了。。
  9. SMOTE过采样算法
  10. grafana配置alert
  11. excel计数连续负数(正数)
  12. Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks(MAML)研读笔记
  13. fstream、ifstream、ofstream创建新文件
  14. ROTATED REGION BASED CNN FOR SHIP DETECTION 基于旋转区域的CNN舰船检测
  15. 2020计算机专业保研夏令营面经:北航计算机
  16. 【Windows】服务程序
  17. 《弃子长安》第九章 大漠金钩
  18. 平板电脑取代PC是大势所趋?
  19. iFixit:苹果AirTag拆解,内部结构紧凑
  20. 算法总结-树(正在更新)

热门文章

  1. 超小白教程之快速排序
  2. 【卸载双系统中的linux系统】删除引导
  3. OSI参考模型各层的功能详解
  4. 保密计算机和移动存储介质台账,银行计算机和移动存储介质保密管理办法
  5. 如何提升串口响应速度
  6. 【文化课每周学习记录】2019.4.14——2019.4.20
  7. 用Tampermonkey真正屏蔽B站自己不感兴趣的视频
  8. 计算机ps如何更改数字,ps数字(ps改数字详细步骤)
  9. R语言描述性统计分析
  10. aspect ratio - 宽高比