Python 使用时间戳的熊猫多线图

Python Panda multi Line graph using time stamp

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

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

这是我的代码

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(),但没有成功。

提前谢谢你。

似乎有两个不同的目标。一种是按 '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 的参数。

下面将数据帧索引转换成Pandas时间戳:

import datetime

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