将时间序列划分为多个级别

时间:2018-10-23 18:47:08

标签: python pandas matplotlib plot

我有一个具有以下结构的数据集:

<
<=

数据集是一个时间序列,其中包含1990年至2013年的数据。我想逐年直观地分析此时间序列,因此我试图生成一个每年具有多个子图的图形,问题是我还想在x轴上显示季度/月/日或日期,例如:

Plot example

我需要为x轴上的多个聚合级别生成图,所以我尝试了几件事。

df = pd.read_csv('daily-minimum-values.csv', header=0, dtype={'Value':float})
df['Date'] = df['Date'].astype('datetime64[ns]')
df.head()

哪个会返回多个图,但是为了比较目的,一眼就能看到多个图很复杂:

Generated plots

我曾尝试在数据框中添加两列,每年和每月都期望这样比较容易绘制,但我不了解matplotlib的工作原理。

+------------+-------+
| Date       | Value |
+------------+-------+
| 1990-01-01 | 20.7  |
+------------+-------+
| 1990-01-02 | 17.4  |
+------------+-------+
| 1990-01-03 | 18.1  |
+------------+-------+
| 1990-01-04 | 15.6  |
+------------+-------+
| 1990-01-05 | 12.4  |
+------------+-------+

哪个会产生以下错误:

  

ValueError:没有为对象类型命名月份的轴

  • matplotlib和pandas如何处理此请求?
  • 如何获得所需的地块?

谢谢。

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,您正在尝试创建Seaborn python模块支持的多图网格。 给定一个数据框df,其时间戳类型为datetime64[ns],并且您希望可视化列values中的某些值,则可以拆分时间戳信息,并将其放入名为{{1}的新列中},yearmonth,然后使用day函数创建绘图网格。例如,以下python代码将为每个月创建一个折线图,并将其放入一系列行中。

FacetGrid

Seaborn建立在matplotlib之上。