Pandas dataframe.pct_change()
函数计算当前元素与先前元素之间的百分比变化。
函数语法格式:
pct_change(periods=1, fill_method='pad', limit=None, freq=None, **kwargs)
参数含义:
periods:表示当前值与前一值之间的变化率,计算变化率的时间间隔,默认值为 1。
fill_method:处理空值的方法(NaN),默认为 'pad',表示用前一个值填充缺失值。
limit:填充缺失值的最大数量,默认为None。
freq:用于时间序列的频率字符串(如 'D' 表示天,'M' 表示月)。
用法:
pct_change操作前需要将数据进行排序,若有缺失项(例如做月销售额同比环比计算中,缺少相应月份的记录数)也需要进行补全,否则计算出来的结果不准确。
import pandas as pd
ly= ['工业']*10 +['城市']*10
id = [i for i in range(1,31)]
month =['202410',
'202412',
'202411',
'202512',
'202501',
'202402',
'202503',
'202504',
'202505',
'202506',
'202507',
'202508',
'202509',
'202510',
'202511']*2
price =list(np.abs(np.sin(np.random.random(30)+100)*100))
df = pd.DataFrame({'id':id,
'ly':ly,
'month':month,
'price':price})
df
运行结果:
排序:
df.sort_values(by=['hangye','month'],ascending=True,inplace=True)
结果:
计算环比:
df['环比'] = df['price'].pct_change(1)
df
计算同比:
df['同比'] = df['price'].pct_change(12)
df