Python熊猫多线图使用时间戳

时间:2015-03-19 19:26:19

标签: python pandas graph

我正在尝试使用python panda绘制图形,到目前为止我能够读取sqlite数据库。我无法使用时间戳生成图表。我想用python熊猫绘制多线图。我想要不同行的月(X轴)与值(Y轴)图。

以下是我的数据框输出(df):

enter image description here

这是我的代码

import sqlite3
from pylab import *
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as dt


conn = sqlite3.connect('Metrics.db')
df = pd.read_sql("SELECT * FROM ABC", conn)

我尝试使用df.plot(),但它没有用。

提前谢谢你。

2 个答案:

答案 0 :(得分:0)

似乎有两个不同的目标。一种方法是按照' Type'对数据进行分组。并分别绘制每一行。为此,您可以使用df.groupby()然后循环遍历组:

for key, grp in df.groupby('Type'):
    plt.plot(grp['Timestamp'], grp['Value'])

第二个问题是如何格式化时间戳以显示月份。为此,首先将时间戳转换为日期时间,然后使用格式化程序仅打印月份名称。

这里有一些代码可以做到这一点,再加上我们从第一部分开始的代码:

df['date'] = [pd.to_datetime(t, unit='s') for t in df['Timestamp']]
for key, grp in df.groupby('Type'):
    plt.plot(grp['date'], grp['Value'])
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%B'))

如果要更改刻度标签格式,可以将参数调整为DateFormatter。

答案 1 :(得分:0)

以下内容将数据帧索引转换为Pandas时间戳:

import datetime

df.index = [pd.Timestamp(datetime.datetime.fromtimestamp(ts)) for ts in df.Timestamp]