Pandas计算同比环比指标的3种方法

18 篇文章 0 订阅

演示步骤:

  • 读取连续3年的天气数据
  • 方法1:Pandas.Series.pct.change
  • 方法2:Pandas.Series.shift
  • 方法3:Pandas.Series.dif
    pct_change、shift、diff,都实现了跨越多行的数据计算
# 读取连续3年的天气数据
import pandas as pd
%matplotlib inline
df = pd.read_csv('./beijing_tianqi_2017-2019.csv',index_col='ymd',parse_dates=True) 
# df.info()

df.head()

# 数据处理

df['bWendu'] = df['bWendu'].str.replace("℃",'').astype('int32')

df['yWendu'] = df['yWendu'].str.replace("℃",'').astype('int32')

# 新的df,为每个月的平均气温
df = df[['bWendu']].resample('M').mean()

# 将索引按照日期升序排列
df.sort_index(ascending=True,inplace=True)

df.head()

# 去除索引为 '2017-04-30'的数据,不连续月份
# df = df[~(df.index == '2017-04-30')]

df.index

df.plot()

# 方法1:pandas.Series.pct_change

'''pct_change方法直接算好了“(新-旧)/旧”的百分比'''

df['bWendu_way1_huanbi'] = df['bWendu'].pct_change(periods =1)
df['bWendu_way1_tongbi'] = df['bWendu'].pct_change(periods =12)

df.head(15)

# 方法2:pandas.Series.shift

'''shift用于移动数据,但是保持索引不变'''

pd.concat(
    [df['bWendu'],
     df['bWendu'].shift(periods = 1),
     df['bWendu'].shift(periods = 12)],       
    axis = 1    
).head(15)

# 环比
series_shifts1 = df['bWendu'].shift(periods=1)
df['bWendu_way2_huanbi'] = (df['bWendu'] - series_shifts1)/series_shifts1

# 同比
series_shifts2 = df['bWendu'].shift(periods=12)
df['bWendu_way2_tongbi'] = (df['bWendu'] - series_shifts2)/series_shifts2

df.head(15)

# 方法3:pandas.Series.diff

'''pandas.Series.diff 用于新值减去旧值'''

pd.concat(
    [df['bWendu'],
     df['bWendu'].diff(periods = 1),
     df['bWendu'].diff(periods = 12)],       
    axis = 1    
).head(15)

# 环比
series_diff1 = df['bWendu'].diff(periods=1)
df['bWendu_way3_huanbi'] = series_diff1/(df['bWendu'] - series_diff1 )

# 同比
series_diff2 = df['bWendu'].diff(periods=12)
df['bWendu_way3_tongbi'] = series_diff2/(df['bWendu'] - series_diff2 )

df.head(15)

原始数据前5行:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值