You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将透视表月份索引转换为PeriodIndex以实现时间序列分析

时间序列可视化的数据集预处理方案

没问题,我带你一步步把这个数据集处理成适合时间序列可视化的格式,全程清晰易懂:

1. 读取初始数据

首先我们从Excel中读取目标列,得到的是宽格式DataFrame,每个账户占一行,月份作为列:

import pandas as pd
import numpy as np
df = pd.read_excel('mypath.xlsx', usecols=['Account', 'Jan', 'Feb', 'Mar'])

初始DataFrame输出:

Account   Jan   Feb   Mar
0      300   NaN   NaN   NaN
1      310  -33  -33  -33
2      320   10    5     7

2. 透视转换为时间序列结构

接下来用pivot_table把账户转成列,月份作为索引,同时把缺失值填充为0,这样的结构更贴合时间序列分析的需求:

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

3. 转换为可计算的时间索引

现在的索引是月份缩写(Jan/Feb/Mar),没法直接做时间差计算、按时间排序这类时间序列特有的操作,所以我们需要把它转换成PeriodIndex(月度周期索引),分两步完成:

3.1 先转换为DatetimeIndex

把月份缩写和指定年份(这里用2018为例)拼接,转成标准的日期时间索引:

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)

3.2 转换为PeriodIndex(月度周期)

把DatetimeIndex转成月度周期的索引,这样后续就能轻松进行时间相关的计算和排序了:

df.index = idx.to_period(freq='M')
print(df.index)

输出:

[OUT] PeriodIndex(['2018-02', '2018-01', '2018-03'], dtype='period[M]', freq='M')

最终处理结果

处理后的DataFrame完全适合时间序列可视化和分析,索引是标准的月度周期,账户作为列:

Account  300  310  320
2018-02    0  -33    5
2018-01    0  -33   10
2018-03    0  -33    7

小提示:如果需要按时间顺序展示,只需加一行df = df.sort_index(),索引就会自动按2018-01、2018-02、2018-03的顺序排列,更符合可视化逻辑哦

内容的提问来源于stack exchange,提问作者mks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 23:52:53