【问题标题】:Plot big dataset in pandas在熊猫中绘制大数据集
【发布时间】:2022-11-15 07:50:48
【问题描述】:

我有温度和光照测量的时间序列:

no,DateTime,Temp,Light
1,11/09/2022 00:01:20,18.10,21.27
2,11/09/2022 00:01:30,18.19,41.70
3,11/09/2022 00:01:40,18.36,5.94

... 每次测量每 10 秒进行一次,我有大约 40 000 个按日期排序的测量值。

现在我想绘制一个折线图来显示该信息(只有光)。

这是我到目前为止得到的:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("C:/WG/Temp/TimeSeries.csv", sep=',')
df = df.drop(columns=['Temp', 'no'])

plot1 = df.plot(kind = 'scatter', x = 'DateTime', y = 'Light')
plot1.show()

但是它冻结了(可能是因为点数)。它通常是如何处理的,图表不必非常准确,所以我想它可以以某种方式重新采样以获得例如每分钟的测量平均值。你有什么建议吗?

编辑:

现在代码看起来像那样,但 x 轴看起来不太好。如何仅在 x 轴上绘制每个第 n 个值,但保留图表上的所有点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以resample 到较低的频率(这里是 1 小时):

    df['DateTime'] = pd.to_datetime(df['DateTime'])
    
    (df.resample('1h', on='DateTime')
       ['Light'].mean()
       .plot()
     )
    

    【讨论】:

    • 好的,我重新采样到 5 分钟。它已绘制,但 x 轴很难阅读,因为上面有很多日期。如何仅显示轴上的每个第 n 个值,但显示绘图区域上的所有值?
    • 请参考this Q/A
    猜你喜欢
    • 2016-01-07
    • 1970-01-01
    • 2018-01-15
    • 2017-11-16
    • 1970-01-01
    • 2017-10-10
    • 2020-01-14
    • 2017-05-28
    • 2017-06-09
    相关资源
    最近更新 更多