Python 如何计算每日数据时间序列的百分比变化
我有一个indexdata的每日时间序列,并希望每年对其进行pct更改。如果我使用Python 如何计算每日数据时间序列的百分比变化,python,pandas,percentage,Python,Pandas,Percentage,我有一个indexdata的每日时间序列,并希望每年对其进行pct更改。如果我使用DataFrame.pct_change(periods=…)我必须定义到去年同一天的确切天数,这是不正确的,因为工作天数每年都不同。有人知道如何从一年前的同一天获得这些变化吗 代码可能如下所示: import pandas as pd list=[] list=[[7.71],[7.79],[6.80],[6.44],[6.46],[6.80]] df = pd.DataFrame(list, columns=
DataFrame.pct_change(periods=…)
我必须定义到去年同一天的确切天数,这是不正确的,因为工作天数每年都不同。有人知道如何从一年前的同一天获得这些变化吗
代码可能如下所示:
import pandas as pd
list=[]
list=[[7.71],[7.79],[6.80],[6.44],[6.46],[6.80]]
df = pd.DataFrame(list, columns=['index'], index=['2016-01-04','2016-01-05','2016-01-06','2017-01-04','2017-01-05','2017-01-06'])
我希望输出如下:
2017-01-04 -16.45%
2017-01-05 -17.10%
2017-01-05 0.00%
编辑:从@Pablo C的正确答案开始:鉴于OP对数据帧的定义,我们首先需要将索引转换为
日期时间索引
,否则@Pablo C的答案将抛出未实现错误:类型索引不支持
import pandas as pd
list=[]
list=[[7.71],[7.79],[6.80],[6.44],[6.46],[6.80]]
df = pd.DataFrame(list, columns=['index'], index=['2016-01-04','2016-01-05','2016-01-06','2017-01-04','2017-01-05','2017-01-06'])
df.index = pd.to_datetime(df.index)
do = pd.DateOffset(years = 1)
df.pct_change(freq = do).dropna().mul(100)
# index
# 2017-01-04 -16.472114
# 2017-01-05 -17.073171
# 2017-01-06 0.000000
第一,一些建议:
list
作为列表名,因为这样会覆盖内置的列表
index
作为列名,因为在index
中包含行标识。此外,由于可以使用df.column\u name
访问列,因此可能会造成混淆,但在这种情况下,这是不可能的,因为df.index
包含数据帧索引 index
2017-01-04 -16.472114
2017-01-05 -17.073171
2017-01-06 0.000000
do = pd.DateOffset(years = 1)
df.pct_change(freq = do).dropna().mul(100)
index
2017-01-04 -16.472114
2017-01-05 -17.073171
2017-01-06 0.000000