我正在开发折线图。数据由传感器生成,是一个元组(时间戳,值)。传感器每60秒左右创建一个新的数据点。
现在我想在图表中显示它,然后我的限制是大约900点。在该图表的每日视图中,我得到大约1440点,这太多了。
我正在寻找一种通用方法,如何将任何大小的数据集缩小到固定大小(在我的情况下为900),同时保持时间戳分布线性。
由于
答案 0 :(得分:1)
我相信您正在尝试重新取样您的数据。您当前的采样率是每秒1/60个样本,并且您尝试获得每秒1/96个样本(900 /(24 * 60 * 60))。两种比率之间的比率是5/8。
如果你搜索“python resample”,你会发现其他类似的问题和文章涉及numpy和pandas,它们已经为它构建了例程。
要手动执行此操作,您可以先上采样,每秒获得7200个样本,然后下采样,每秒下降到900个样本。
要进行上采样,您可以将新列表设置为五倍,并使用现有数据填充每五个元素。然后你可以做线性插值来填补空白。
如果您这样做,您可以通过简单地采用每个第八个元素来缩减采样。
答案 1 :(得分:0)
这是我使用pandas的最终解决方案:
df = pd.read_json('co2.json')
# calculates the 'rule' parameter for resampling
seconds = int(df.tail(1)[0]) - int(df.head(1)[0])
rule = seconds // 960
df.index = pd.to_datetime(df[0], unit='s')
df.resample('%sS' % rule).mean()