2017-08-24 21 views
0

我正在开发折线图。数据由传感器生成并且是元组(时间戳,值)。传感器每60秒左右创建一个新的数据点。将数据集缩小到较小的大小,将信息的要点保存在数据集中

现在我想在图表中显示它,而我的限制是在图形上的大约900个点。在这张图的日常观察中,我得到了大约1440分,这太多了。

我正在寻找一种通用的方法来将任意大小的数据集缩小到固定大小(在我的情况下为900),同时它使时间戳分布保持线性。

感谢

+0

您应该添加预期的输入和输出的例子,看看https://stackoverflow.com/help/mcve – Netwave

+0

请澄清的要求。你想让时间戳分布完全线性或近似线性足够好吗?是否允许某种“混叠”,其中两个相邻点的结果以某种方式进行平均? –

+0

在这一点上,我还不知道。我会选择Pandas的resample可以提供的并且在现实生活中看到它 –

回答

1

我相信你正在试图重采样您的数据。您目前的采样率为每秒1/60个采样点,并且您试图达到每秒1/96个采样点(900 /(24 * 60 * 60))。两个比率之间的比率是5/8。

如果你搜索“python resample”,你会发现其他类似的问题和文章涉及numpy和熊猫,它们已经建立在它的例程。

做手工,你可以先上采样 5获得每秒7200个样本,然后下采样 8踏踏实实为每秒900个样本。

要进行上采样,您可以创建一个新列表五次,并用现有数据填充每五个元素。然后,您可以执行线性插值来填补空白。

你可以通过简单地获取每第八个元素来缩减采样。

+0

是的,我在写问题几分钟后发现了正确的术语。我目前正在研究熊猫的重新采样,它如何做到我需要的 –

0

这是我的最终使用溶液大熊猫:

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() 
相关问题