【问题标题】:Python Panda multi Line graph using time stamp使用时间戳的 Python Panda 多线图
【发布时间】:2015-03-19 19:26:19
【问题描述】:

我正在尝试使用 python panda 绘制图形,到目前为止我能够读取 sqlite 数据库。我无法使用时间戳生成图表。我想使用 python panda 绘制多线图。我想要不同线的月(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(),但没有成功。

提前谢谢你。

【问题讨论】:

    标签: python pandas graph


    【解决方案1】:

    似乎有两个不同的目标。一种是按“类型”对数据进行分组并分别绘制每一行。为此,您可以使用 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 的参数。

    【讨论】:

    • 感谢您的回复。我已经用 show() 进行了测试,它没有给出正确的输出。我想要多线的月份(x 轴)和值(y 轴)图。
    • 对不起,我误解了你的问题。我更新的答案是否提供了您正在寻找的内容?
    • 它几乎是正确的。我想要时间戳中的月份名称,而不是 x 轴上的时间戳。
    • 一种方法是将月份添加为 DataFrame 上的另一列,然后绘制该列而不是时间戳。
    • 这似乎是一个与您原来的问题不同的问题,值得拥有自己的主题线程。请将它作为一个全新的问题发布在网站上,以便它获得顶级可见性,这样更多的人可以帮助回答它。希望我对最初的问题有所帮助!
    【解决方案2】:

    以下将数据框索引转换为 Pandas 时间戳:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-27
      • 2019-12-19
      • 2019-09-30
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 2018-03-16
      • 2020-01-21
      相关资源
      最近更新 更多