【发布时间】:2017-09-05 21:54:13
【问题描述】:
我尝试按一天中的天数和小时数(X-> 天,Y-> 小时)从 pandas 数据帧生成热图。 结果应该是这样的:
数据源是postgres中的一个表:
id | created_at
---------+------------------------
2558145 | 2017-03-02 11:31:15+01
2558146 | 2017-03-02 11:31:46+01
2558147 | 2017-03-02 11:32:28+01
2558148 | 2017-03-02 11:32:57+01
....
这是我的代码,按小时重新组合数据。
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('postgresql://postgres:postgres@localhost:5432/bla')
import datetime
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
from matplotlib.dates import date2num
import seaborn as sns
df = pd.read_sql_query("""
SELECT created_at, 1 as print
FROM foo
WHERE created_at > '2017-02-01'
AND created_at < '2017-03-01'""", con=engine)
df['created_at'] = pd.to_datetime(df['created_at'])
df.index = df['created_at']
df = df.resample('H')['print'].sum()
df.fillna(0, inplace=True)
print(df.head())
created_at
2017-02-01 07:00:00+00:00 1.0
2017-02-01 08:00:00+00:00 152.0
2017-02-01 09:00:00+00:00 101.0
2017-02-01 10:00:00+00:00 92.0
2017-02-01 11:00:00+00:00 184.0
Freq: H, Name: print, dtype: float64
结果看起来不错,但我不知道如何绘制这个数据框?
【问题讨论】:
-
我想这不是直接重复的,因为在链接的问题中,数据已经是 2D 的,而这里我们有单列,首先需要将其传输到 2D 数组 - 这可能是步骤提问者有问题。
标签: python pandas matplotlib seaborn