pandas中的pct_change函数
·
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 在Python的pandas库中,Series.pct_change() 和 DataFrame.pct_change()函数用于计算百分比变化,percentage change 百分比变化
# 它对于分析时间序列的数据或者需要了解数据变化幅度的场景非常有用
# 语法:
# pct_change(self,periods=1,fill_method='pad',limit=None,freq=None)
# 参数解释:
# periods:整数,默认值为1,表示计算百分比变化时所用的周期数
# fill_method:字符串,默认值为'pad',用于指定填充缺失值的方法,'pad'用前一个非缺失值填充
# limit:整数,默认值为None,用于指定连续填充的最大数量,防止过度填充可能掩盖真实的数据变化情况
# freq:用的较少,用到了再说吧
# data = pd.Series(data=[10,11,12,13,14,15])
# pct_change_result = data.pct_change(periods=3)
# print(pct_change_result)
# 处理股票的日收益率,日收益率 = (今天的收益 - 昨天的收益)/ 昨天的收益
# stock_prices = pd.Series(data=[100,101,99,103,100,102])
# daily_returns = stock_prices.pct_change()
# print(daily_returns)
# 计算环比增长率
# 环比增长率是指在相邻的时间段(如月度,季度)之间的百分比变化,主要反映短期的变化趋势
# 在未来的版本中,用ME,表示month end,月度最后一天,用于生成每个月最后一天的日期序列
# data = {"Month":pd.date_range(start='2017-01-01',periods=24,freq='ME')}
# print(data)
# # 按月计算环比增长率
# data = {"Month":pd.date_range(start='2017-01-01',periods=12,freq='ME'),
# "Sales":[100,120,119,104,150,144,120,120,124,121,110,198]}
# df = pd.DataFrame(data=data)
# df.set_index('Month',inplace=True)
# print(df)
# df['MoM_Growth'] = df['Sales'].pct_change(periods=1) # Month Over Month Growth Rate
# print(df)
# 按年计算环比增长率
# data_annual = {"Year":pd.date_range('2017-01-01',periods=4,freq='YE'),
# "Sales":[1000,1200,1180,1240]}
# df_annual = pd.DataFrame(data=data_annual)
# df_annual.set_index('Year',inplace=True)
# df_annual["YoY_Growth"] = df_annual['Sales'].pct_change(periods=1)
# print(df_annual)
# 计算同比增长率
# 同比增长率是指与上一年同期的增长百分比,主要用来衡量长期趋势,消除季节因素的影响
# data = {"Month":pd.date_range(start='2017-01-01',periods=24,freq='ME'),
# "Sales":np.random.randint(100,200,size=(24))}
# df = pd.DataFrame(data=data)
# df.set_index('Month',inplace=True)
# df['YoY_Growth'] = df['Sales'].pct_change(periods=12) # 计算同比增长率,这里periods设置成12是因为按月技术按一年后的增长率
# print(df)
# 如果数据是季度数据或者年度数据,只需调整periods参数即可,年度数据调整periods参数值为1,季度数据调整periods参数值为4
# 只示范季度数据
# data_quarterly = {"Quarter":pd.date_range('2017-01-01',periods=8,freq='QE'),
# "Sales":np.random.randint(200,400,size=8)}
# df_quarterly = pd.DataFrame(data=data_quarterly)
# df_quarterly.set_index("Quarter",inplace=True)
# df_quarterly['YoY_Growth'] = df_quarterly['Sales'].pct_change(periods=4)
# print(df_quarterly)
# 年平均增长率 每个月的同比增长率的平均值
data_quarterly = {"Quarter":pd.date_range(start='2017-01-01',periods=12,freq='QE'),
"Sales":np.random.randint(400,700,12)}
df_quarterly = pd.DataFrame(data=data_quarterly)
df_quarterly.set_index('Quarter',inplace=True)
# print(df_quarterly['Quarter'].dt.year) # 没有设置成索引,就要用dt来访问datetime类型的数据,就像要用str来访问字符串类型的数据
# print(df_quarterly.index.year)
df_yearly_growth = df_quarterly.groupby(by=df_quarterly.index.year)['Sales'].apply(lambda x:x.pct_change().mean())
print(df_yearly_growth)
更多推荐
所有评论(0)