pandas时间序列展示月同比数据变化
时间: 2023-08-06 16:01:51 浏览: 44
可以使用pandas中的`resample()`方法来进行时间序列的重采样,并使用`pct_change()`方法计算同比变化率。下面是一个示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 生成一个月频率的时间序列数据
dates = pd.date_range(start='2021-01-01', end='2021-12-31', freq='M')
data = pd.Series([2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], index=dates)
# 对数据进行重采样,转换为年度频率
data_yoy = data.resample('Y').last().pct_change()
# 绘制月同比数据变化曲线
plt.plot(data_yoy.index, data_yoy.values, '-o')
plt.xlabel('Year')
plt.ylabel('YoY Change')
plt.title('Monthly YoY Change')
plt.show()
```
在这个例子中,我们生成了一个从2021年1月1日到2021年12月31日的月频率时间序列数据,然后通过`resample()`方法将其转换为年度频率,并使用`pct_change()`方法计算同比变化率。最后,我们使用matplotlib库绘制了月同比数据变化曲线。
相关问题
pandas 时间序列数据叠加
要将时间序列数据叠加,可以使用 Pandas 库中的 `concat()` 函数。`concat()` 函数可以按照指定的轴将多个 Pandas 对象(如 Series 或 DataFrame)叠加在一起。
例如,假设有两个包含时间序列数据的 DataFrame 对象,可以使用以下代码将它们叠加在一起:
```python
import pandas as pd
# 创建第一个时间序列数据
df1 = pd.DataFrame({
'date': pd.date_range('2022-01-01', '2022-01-05', freq='D'),
'value': [1, 2, 3, 4, 5]
})
# 创建第二个时间序列数据
df2 = pd.DataFrame({
'date': pd.date_range('2022-01-03', '2022-01-07', freq='D'),
'value': [6, 7, 8, 9, 10]
})
# 将两个时间序列数据叠加
df = pd.concat([df1, df2])
# 打印结果
print(df)
```
在上面的代码中,首先创建了两个包含时间序列数据的 DataFrame 对象 `df1` 和 `df2`,然后使用 `concat()` 函数将它们叠加在一起,并将结果存储在新的 DataFrame 对象 `df` 中。最后,使用 `print()` 函数打印结果。
输出结果如下:
```
date value
0 2022-01-01 1
1 2022-01-02 2
2 2022-01-03 3
3 2022-01-04 4
4 2022-01-05 5
0 2022-01-03 6
1 2022-01-04 7
2 2022-01-05 8
3 2022-01-06 9
4 2022-01-07 10
```
可以看到,`concat()` 函数将两个时间序列数据叠加在一起,并保留了各自的索引。
pandas读取时间序列数据
使用pandas读取时间序列数据可以使用`read_csv()`函数,设置`parse_dates`和`index_col`参数即可。例如:
```python
import pandas as pd
df = pd.read_csv('data.csv', parse_dates=[0], index_col=[0])
```
其中,`data.csv`是时间序列数据的文件名,`parse_dates=[0]`表示将第一列解析为日期时间格式,`index_col=[0]`表示将第一列作为DataFrame的索引。如果数据中有多列时间序列,可以在`parse_dates`和`index_col`参数中加入对应的列号。