如何解决时间序列的数据透视表和period_index
我有一个数据集,希望将其作为时间序列数据进行可视化处理。
import pandas as pd
import numpy as np
df = pd.read_excel('mypath.xlsx',usecols=['Account','Jan','Feb','Mar'])
df
Account Jan Feb Mar
0 300 NaN NaN NaN
1 310 -33 -33 -33
2 320 10 5 7
现在,我想透视此数据框,以将“帐户”列作为第一行,理想情况下将“月”(1月,2月,3月)作为索引并转换为period_index,因此我可以计算时间增量等。 / p>
所以我这样做:
df = df.pivot_table(df,columns = ['Account'],fill_value = 0)
Account 300 310 320
Feb 0 -33 5
Jan 0 -33 10
Mar 0 -33 7
在该示例中,如何使1月,2月,3月成为period_index,并像实际索引一样工作?
############################
获得period_index的解决方案如下:
idx = pd.to_datetime('2018-' + df.index)
print(idx)
[OUT]
DatetimeIndex(['2018-02-01','2018-01-01','2018-03-01'],dtype='datetime64[ns]',freq=None)
现在转换为period_index格式
df.index = idx.to_period(freq='M')
print(df.index)
[OUT]
PeriodIndex(['2018-02','2018-01','2018-03'],dtype='period[M]',freq='M')
最终看起来像这样:
Account 300 310 320
2018-02 0 -33 5
2018-01 0 -33 10
2018-03 0 -33 7
解决方法
您只需将索引修改为-
df.index = pd.to_datetime('2018-' + df.index)
因此,如果您的行索引按照问题中所示的顺序混乱,那么您也可以将其转换为大熊猫日期时间。
,使用pandas.date_range
+ Index.map
df.index = (
df.index.map({v.strftime("%b") : v for v in pd.date_range("2018-01","2018-03",freq="MS")})
)
df.index
Out[617]: DatetimeIndex(['2018-02-01','2018-01-01','2018-03-01'],dtype='datetime64[ns]',freq=None)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。