问题标签 [pandas-resample]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
14486 浏览

python - Pandas df.resample 具有特定于列的聚合函数

使用pandas.DataFrame.resample我可以对 DataFrame 进行下采样:

这将使用类似日期时间的索引重新采样数据帧,以便 3 秒内的所有值聚合到一行中。列的值被平均。

问题:我有一个包含多列的数据框。是否可以为不同的列指定不同的聚合函数,例如我想要"sum"column x"mean"columny并选择"last"for column z?我怎样才能达到这种效果?

我知道我可以创建一个新的空数据框,然后调用resample3 次,但我更喜欢更快的就地解决方案。

0 投票
1 回答
258 浏览

python - 熊猫聚合器 .first() 和 .last() 之间的区别

我很好奇在这个特定实例中做什么last()和做什么(当链接到重新采样时)。first()如果我错了,请纠正我,但我理解你是否将参数传递给第一个和最后一个,例如 3;它返回前 3 个月或前 3 年。

在这种情况下,由于我没有将任何参数传递给first()and last(),当我像这样重新采样时它实际上在做什么?我知道,如果我通过链接重新采样.mean(),我将使用平均所有月份的平均分数重新采样到几年,但是当我使用时会发生什么last()

更重要的是,为什么在这种情况first()last()会给我不同的答案?我看到在数字上它们是不相等的。

IE:post2008.resample().first() != post2008.resample().last()

TLDR:

  1. 做什么.first().last()做什么?
  2. 在这种情况下,当链接到重新采样时会做什么.first()和做什么?.last()
  3. 为什么.resample().first() != .resample().last()呢?

这是聚合之前的代码:

这是print(post2008.tail(8))输出:

这是重新采样和聚合的代码last()

这就是每年的情况post2008.resample('A').last()

这是重新采样和聚合的代码first()

这就是每年的情况post2008.resample('A').first()

0 投票
4 回答
3145 浏览

python - Pandas 重新采样开始日期

我想使用特定日期(或月份)作为第一个 bin 的边缘重新采样 pandas 对象。例如,在下面的代码片段中,我希望我的第一个索引值是2020-02-29并且我很乐意指定start=2or start="2020-02-29"

到目前为止,这是我能想到的最干净的用途pd.cutgroupby

0 投票
1 回答
1379 浏览

python - 在不填写缺失时间的情况下重新采样 Pandas 数据框

重新采样数据帧可以使数据帧达到更高或更低的时间分辨率。大多数情况下,这用于降低分辨率(例如,将 1 分钟数据重新采样为每月值)。当数据集稀疏时(例如,2020 年 2 月没有收集到数据),2020 年 2 月的行将用重新采样的数据帧的 NaN 填充。问题是当数据记录很长且稀疏时,会有很多 NaN 行,这会使数据帧变得不必要地大并占用大量 CPU 时间。例如,考虑这个数据帧和重采样操作:

此数据框中的大部分数据都是无用的,可以通过以下方式删除:

但是,这是草率的。是否有另一种方法来重新采样不使用 NaN 填充所有数据间隙的数据帧(即在上面的示例中,生成的数据帧将只有两行)?

0 投票
0 回答
226 浏览

python - 使用 groupby apply 与 resample apply 时的 bin 有什么区别?

这是一个有点宽泛的话题,但我会尝试将其缩减为一些具体的问题。

我注意到两者之间的区别resamplegroupby我很想了解。这是一些每小时的时间序列数据:

我可以使用 or 对数据进行下采样groupbyfreq pandas.Grouperresample似乎是更典型的做法):

我的印象是,这两者本质上是一回事(如果我错了,请纠正我,但resample重新命名了groupby)?但是我发现,当使用apply每个分组对象的方法时,您可以索引“DataFrameGroupBy”对象中的特定列,g但不能索引“Resampler”对象r

看起来“看到”的数据dapply每种情况下都不同,如下所示:

但是,如果您只是简单地遍历 Resampler 对象,您将获得作为 DataFrames 的 bin,这看起来类似于groupby

迭代 DataFrameGroupBy 对象时,打印输出是相同的。

我的问题基于上述?

  • 您可以使用resample和访问特定列apply吗?我以为我有这样做的代码,但现在我想我错了。
  • 为什么resample apply每个 bin 的每列而不是每个 bin 的 Series 工作DataFrames

任何关于这里发生的事情的一般性评论,或者是否应该鼓励或阻止这种模式,也将不胜感激。谢谢!

0 投票
2 回答
459 浏览

python - 在熊猫中重新采样布尔值

我遇到了一个属性,我发现在pandas. 这是一些时间序列数据:

所以数据看起来像:

我原以为我可以在重新采样时对布尔列执行简单的操作(如求和),但是(原样)这失败了:

“布尔”列被删除。我对为什么会发生这种情况的印象是 b/cdtype列的object. 更改以解决问题:

但是(奇怪的是)您仍然可以通过索引重新采样对象而不更改布尔值来求和dtype

而且,如果唯一的列是布尔值,您仍然可以重新采样(尽管该列仍然是object):

是什么让后两个示例起作用?我可以看到它们可能更明确一点(“拜托,我真的想重新采样此列!”),但我不明白为什么resample如果可以完成原始操作则不允许操作。

0 投票
1 回答
152 浏览

python - 如何在`pandas``Series`中进行“加权上采样”?

我在 python 中有一个函数,用于在上采样时分配值。例如,要对我的汽车从每月到每天的行驶距离进行上采样:

该函数将每个月的值平均除以该月的天数,这会导致该2020-02值除以 29,2020-03在这种情况下,根据需要将该值除以 31。


但是,当上采样到周期具有不均匀持续时间的频率时,这会给我带来不想要的结果。此属性的两种情况:

  1. 逐月:

想要的是将一年的价值划分为几个月,每个月都会收到与其 duration 成比例的分数。31/366 * x即,我希望将年份值拆分为,29/366 * x等月份:

有没有办法做到这一点?

  1. 夏令时

第二种情况是在 DST 转换中,它实际上已经在我的初始示例中显示。2020-03-29比我的时区中的其他三月天短 1 小时,因此它实际上应该比其他天收到更小的三月值。

尽管它与情况 1 是同一类型的问题,但我怀疑它会更难解决。


编辑:我找到了解决情况 1 的方法,但不是情况 2;在这个问题下面看到我的答案。在改进我的答案以及包括第二种情况方面仍然感谢帮助。


如果我们找到了一种稳健的方法来做这件事,但它有点详细,我可能是一个很好的请求功能(或者尝试通过拉取请求自己添加它),因为它似乎是一个很好的补充。因此,扩展PeriodIndexResamplerapi 以允许.distribute()具有此功能的方法,除了.ffill(),sum().mean()方法。

0 投票
1 回答
52 浏览

python - pandas .resample() 不适用于某些示例。为什么?

问题

  • 我希望 Pandas.resample()方法的结果具有 2 级索引。正如您可以在下面的示例中查看的那样,对 的重新采样good_example_df会产生 2 级索引。
  • index_list当我将from的第二个元素更改为datetime(2020,1,2,12,39,59)todatetime(2020,1,3,12,39,59)时, .resample() 方法只给了我 1 级索引。这个例子是用 给出的bad_example_df。这是我不想发生的事情。
  • 如何使.resample()方法的结果始终具有 2 级索引,就像 good_example_df 一样?
  • 我问这个问题的原因是我希望重采样方法的结果是一致的。我不希望方法的结果因输入而异。

代码示例

0 投票
2 回答
54 浏览

python - 数据框中每月值的平均值,日期为列

感谢您投入时间来帮助我:)

我有如下数据框(df_NSE_Price_):

我想要如下输出:

输出数据必须具有每月数据的平均值。

到目前为止我已经尝试过

df_NSE_Price_.resample('M',axis=1).mean()

但这给了我错误仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但得到了一个“索引”实例

0 投票
1 回答
86 浏览

python - 如何重新采样 csv 以便它可以与我的其他 csv 完美对齐

我正在研究项目的另一个方面,但使用从 Mesowest 下载的 csv 文件进行实验。新代码是

但是我得到了一个

关于天气数据的重新采样,因为 wxdata 在列中有值:

当我想将其设置为每 10 分钟甚至 15 分钟以与骑行数据很好地对齐时,每 5 分钟一次。

以下是 wx 的前几行: Excel 示例 但是,我知道 wx 中的时代与海盗的时代并不一致。