我正在尝试使用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(),但它没有用。
提前谢谢你。
答案 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]