gpt4 book ai didi

python-3.x - 带有日期时间轴的 Seaborn 热图

转载 作者:行者123 更新时间:2023-12-05 03:06:35 28 4
gpt4 key购买 nike

我并创建一个热图,其中 x 轴为年份,y 轴为月份。热图中将显示百分比返回。这就是我所追求的。

heatmap

所以我有一些数据并将它们转换为 pct_change() 系列。

import pandas_datareader.data as web
import pandas as pd
from datetime import datetime as dt
import numpy as np
import seaborn as sns

start = dt(year = 2000, month = 1, day = 1)

df = web.DataReader('GDP', 'fred', start = '2000')
df.pct_change()
df.tail()

这就是我们正在处理的内容。重要的是要注意索引是一个 Datetime 对象。

    GDP
DATE
2016-10-01 18905.545
2017-01-01 19057.705
2017-04-01 19250.009
2017-07-01 19500.602
2017-10-01 19736.491

我想做这样的事情,但我不知道如何用日期时间索引来实现它

gdp = df.pivot(df.index.month, df.index.year, "GDP")
ax = sns.heatmap(gdp)

哪个(预期)不起作用...

KeyError: "Int64Index([ 1,  4,  7, 10,  1,  4,  7, 10,  1,  4,  7, 10,  1,  4,  7, 10,  1,\n             4,  7, 10,  1,  4,  7, 10,  1,  4,  7, 10,  1,  4,  7, 10,  1,  4,\n             7, 10,  1,  4,  7, 10,  1,  4,  7, 10,  1,  4,  7, 10,  1,  4,  7,\n            10,  1,  4,  7, 10,  1,  4,  7, 10,  1,  4,  7, 10,  1,  4,  7, 10,\n             1,  4,  7, 10],\n           dtype='int64', name='DATE') not in index"

最佳答案

它不起作用,因为您在 pivot 函数中提取月份和年份,而这些信息不在您指定的原始 df 中。

您可以预先指定它们:

df["Year"] = df.DATE.apply(lambda x: x.year)
df["Month"] = df.DATE.apply(lambda x: x.strftime("%B"))
df.pivot_table(index="Month",columns="Year",values="GDP", aggfunc="sum").fillna(0)
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
pt = pt.reindex_axis(months)
sns.heatmap(pt, annot=True)

我正在为行重新编制索引,因为调用 pivot_table 时,它会按升序对列或行进行排序,而这通常不是月份名称的排序方式。

上面给了我: enter image description here

关于python-3.x - 带有日期时间轴的 Seaborn 热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49058347/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com