Pandas 每N行对数据帧重新采样一次
我有一个脚本,可以将系统日志文件读入数据帧,并从中生成图表。这些图表适用于小数据集。但是,当我面对更大的数据集时,由于数据收集的时间范围更大,图表变得过于拥挤,无法辨别 我计划对数据帧进行重采样,这样,如果数据集通过一定的大小,我将对其进行重采样,以便最终只有行数的大小限制。这意味着我需要过滤数据帧,这样每个n=实际大小/大小限制行将聚合到新数据帧中的一行。agregion可以是平均值,也可以是第n行的原样Pandas 每N行对数据帧重新采样一次,pandas,Pandas,我有一个脚本,可以将系统日志文件读入数据帧,并从中生成图表。这些图表适用于小数据集。但是,当我面对更大的数据集时,由于数据收集的时间范围更大,图表变得过于拥挤,无法辨别 我计划对数据帧进行重采样,这样,如果数据集通过一定的大小,我将对其进行重采样,以便最终只有行数的大小限制。这意味着我需要过滤数据帧,这样每个n=实际大小/大小限制行将聚合到新数据帧中的一行。agregion可以是平均值,也可以是第n行的原样 我对熊猫不太熟悉,所以可能错过了一些明显的方法 实际上,我认为您不应该修改数据本身,而应
我对熊猫不太熟悉,所以可能错过了一些明显的方法 实际上,我认为您不应该修改数据本身,而应该在所需的绘图间隔内查看数据。该视图将是要绘制的实际数据点 例如,对于计算机屏幕,一种简单的方法是计算间隔中有多少点,以及有多少像素可用。因此,对于在1000像素宽的窗口中绘制10000个点的数据帧,使用此语法(整个_数据将是一个1D数组,仅用于示例),可以采用一个步长为10的切片: 这可能会产生不期望的效果,特别是掩盖可能从切片操作中“逃逸”的短峰值。另一种方法是将数据拆分为多个存储箱,然后为每个存储箱计算一个数据点(例如,最大值)。我觉得由于numpy/pandas高效的阵列操作,这些操作实际上可能很快
希望这有帮助 您可以使用索引上的
pandas.qcut
方法将索引划分为相等的分位数。传递给qcut
的值可以是实际大小/大小限制
In [1]: from pandas import *
In [2]: df = DataFrame({'a':range(10000)})
In [3]: df.head()
Out[3]:
a
0 0
1 1
2 2
3 3
4 4
这里,通过qcut(df.index,5)
将索引分组,得到5个相等的分组。然后我取每组的平均值
In [4]: df.groupby(qcut(df.index,5)).mean()
Out[4]:
a
[0, 1999.8] 999.5
(1999.8, 3999.6] 2999.5
(3999.6, 5999.4] 4999.5
(5999.4, 7999.2] 6999.5
(7999.2, 9999] 8999.5
谢谢,确实有用。我错过了明显的手术。我会尝试找到一个更优雅的装箱/打包解决方案,但这种细化操作目前还有效。如果你的趋势很慢,并且没有太多尖峰,那么简单的步骤通常就足够了。我处理有噪声的信号,简单的步进有时效果很差。我计划看看一些音频编辑程序的绘图引擎,这些程序具有非常快速的绘图仪导航,例如Audacity。
In [4]: df.groupby(qcut(df.index,5)).mean()
Out[4]:
a
[0, 1999.8] 999.5
(1999.8, 3999.6] 2999.5
(3999.6, 5999.4] 4999.5
(5999.4, 7999.2] 6999.5
(7999.2, 9999] 8999.5