Python 将数据集缩小,将信息的要点保留在数据集中

Python 将数据集缩小,将信息的要点保留在数据集中,python,math,statistics,Python,Math,Statistics,我正在画一张折线图。数据由传感器生成,是一个元组时间戳值。传感器每隔60秒左右创建一个新数据点 现在我想把它显示在一个图表中,我的限制是在图表上显示大约900个点。从每天的图表来看,我会得到大约1440分,这太多了 我正在寻找一种通用方法,在我的案例900中,如何将任意大小的数据集缩小到固定大小,同时保持时间戳分布的线性 谢谢我相信您正在尝试重新采样数据。您当前的采样率为每秒1/60个样本,您正在尝试将采样率提高到每秒1/96个900/24*60*60。这两个比率是5/8 如果您搜索python

我正在画一张折线图。数据由传感器生成,是一个元组时间戳值。传感器每隔60秒左右创建一个新数据点

现在我想把它显示在一个图表中,我的限制是在图表上显示大约900个点。从每天的图表来看,我会得到大约1440分,这太多了

我正在寻找一种通用方法,在我的案例900中,如何将任意大小的数据集缩小到固定大小,同时保持时间戳分布的线性


谢谢

我相信您正在尝试重新采样数据。您当前的采样率为每秒1/60个样本,您正在尝试将采样率提高到每秒1/96个900/24*60*60。这两个比率是5/8

如果您搜索python重采样,您将发现其他类似的问题和文章,其中涉及numpy和pandas,它们为它内置了例程

要手动执行此操作,您可以先将采样数增加5,以达到每秒7200个样本,然后再将采样数减少8,以达到每秒900个样本

要增加采样,您可以创建一个五倍长的新列表,并用现有数据填充每五个元素。然后你可以做,比如说,线性插值来填补空白


如果你这样做了,你可以通过简单地取每八个元素来减少采样。

以下是我使用熊猫的最终解决方案:

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()

您应该添加预期输入和输出的示例,查看请澄清要求。您希望时间戳分布是完全线性的还是近似线性的?是否允许某种类型的混叠,其中两个相邻点的结果以某种方式平均在一起?在这一点上,我还不知道。我将用熊猫的重采样能提供什么,并在现实生活中看到它是的,我在写问题几分钟后找到了正确的术语。我目前正在研究熊猫的重新取样,以及它如何满足我的需要