从pandas datafram对时间序列数据进行着色处理

2024-04-29 10:35:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个Pandas数据帧:svt_数据和asp_数据。第一个是时间序列数据,第二个是这个序列中的特定时间。我可以使用svt_data.plot()绘制时间序列数据。我想从第二个数据帧中对特定的时间进行着色。在

在过去,我没有使用pandas数据帧,而是使用原生python列表,方法是迭代列表元素并使用matplotlib的plt.axvline函数。但是,当我迭代dataframe元素并使用此函数时,它将生成两个图形而不是一个。它从一个图上的第二个数据帧对特定时间进行着色,并给我另一个图上的时间序列。在

我怎么能让他们在同一个情节上?在

    from numpy import *
    from pandas import *
    import pylab as plt

    svt_data = read_csv("D:\\Archives\\workspace\\sizeTimeData.txt", sep=" ", header=None, names=["time", "size"])
    asp_data = read_csv("D:\\Archives\\workspace\\asperityFailTimes.txt", sep=" ", header=None, names=["asp1"])

    for i in asp_data.asp1:
        plt.axvline(i,color=(0,1,0),alpha='0.5')

    svt_data.plot(x='time', y="size", color="black")
    plt.show()

编辑:以下是使用列表而不是数据帧生成的类似图形的外观。在

img

我之所以选择熊猫,是因为我的数据集越来越大,绘制数据甚至读取数据都需要不合理的时间。在

Zoomed in on one cluster


Tags: 数据import元素pandas列表dataplot时间
1条回答
网友
1楼 · 发布于 2024-04-29 10:35:40

我认为默认情况下,pandas.DataFrame.plot会创建一个新图形。
如果您只需切换plotting命令,从之前的数据帧和之后的行绘制数据,您将得到一个单独的图形。在

svt_data.plot(x='time', y="size", color="black")

for i in asp_data.asp1:
    plt.axvline(i,color=(0,1,0),alpha='0.5')

相关问题 更多 >