问题标签 [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 投票
0 回答
12 浏览

pandas-resample - 使用熊猫重采样时,用于重采样的日期时间列消失了

希望这是一个容易的。使用任一...

dfnew = dfjoin.set_index('Time').resample('H').median()

或者

dfnew = dfjoin.resample('H',on="Time").median()

dfnew 中不存在“时间”列。(在某种程度上答案是显而易见的,我提前道歉。)

0 投票
3 回答
248 浏览

python - 如果日期时间索引的差异小于熊猫系列的 5 分钟,则分组

我想执行一个大熊猫时间序列的 groupby.first() ,其中日期时间索引几乎是连续的,几乎小于 5 分钟的差异。我看过很多材料,但如果日期时间不是连续的,就像我的例子一样:

我想要的输出应该是:

任何人都可以帮助我吗?

0 投票
2 回答
162 浏览

python - 找到每月不相等值的平均值并根据某些条件进行分配

我目前正在努力将我的数据转换为有用的数据集。我需要从第一个月到最后一个月平均分配付款。问题是付款不一致和不平等。此外,有些付款已全额支付,应根据协议数据框从第一次付款加上适用的期限开始分配。

我的表如下:

第一张表:付款

cust_id 协议ID 日期 支付
1 一个 20 年 12 月 1 日 200
1 一个 2/2/21 200
1 一个 2/3/21 100
1 一个 21 年 5 月 1 日 200
1 21 年 1 月 2 日 50
1 21 年 1 月 9 日 20
1 21 年 3 月 1 日 80
1 21 年 4 月 23 日 90
2 C 21 年 1 月 21 日 600
3 D 21 年 3 月 4 日 150
3 D 21 年 5 月 3 日 150

这是付款数据框的代码:

表二:协议

协议ID 激活 term_months 总费用
一个 20 年 12 月 1 日 24 4800
21 年 1 月 21 日 6 600
C 21 年 1 月 21 日 6 600
D 21 年 3 月 4 日 6 300

这是协议数据框的代码:

我想要的结果如下:

cust_id 协议ID 日期 支付
1 一个 20 年 12 月 1 日 116.67
1 一个 21 年 1 月 1 日 116.67
1 一个 2/1/21 116.67
1 一个 21 年 3 月 1 日 116.67
1 一个 21 年 4 月 1 日 116.67
1 一个 21 年 5 月 1 日 116.67
1 21 年 1 月 1 日 60
1 2/1/21 60
1 21 年 3 月 1 日 60
1 21 年 4 月 1 日 60
2 C 21 年 1 月 1 日 100
2 C 2/1/21 100
2 C 21 年 3 月 1 日 100
2 C 21 年 4 月 1 日 100
2 C 21 年 5 月 1 日 100
2 C 21 年 6 月 1 日 100
3 D 21 年 3 月 1 日 50
3 D 21 年 4 月 1 日 50
3 D 21 年 5 月 1 日 50
3 D 21 年 6 月 1 日 50
3 D 21 年 7 月 1 日 50
3 D 21 年 8 月 1 日 50

或者,以代码形式:

激活日期与首次付款日期相同。

我尝试使用以下代码(由 AlexK 建议)创建另一列,但仅当总付款少于总费用时才适用。但是,当总付款等于总费用时,我需要从付款开始到月底相应地分配付款(开始加上以月为单位的条款)。

0 投票
1 回答
100 浏览

python-3.x - 熊猫插值给出奇怪的结果

我正在使用 Pandas 及时插值数据点,但是在重新采样和插值时,在使用不同的重采样率时,对于相同的插值时间,我会得到不同的结果。

这是一个测试示例:

a数据框和数据框应在b每分钟预测相同的值,但在大多数情况下,此时它们会有所不同。

有谁知道这可能是什么原因造成的?在绘制完整结果时,似乎在分钟内重新采样会导致 pandas 忽略不在分钟内的时间戳中的数据(例如 12:01:40 和 12:03:20)。

0 投票
2 回答
146 浏览

python - Pandas 重新采样而不聚合

我已经尝试了很多方法来找到一种方法,该方法允许我在没有任何聚合的情况下获得重采样或组的所有组,例如从:

我能够通过以下方式获得特定重采样的每一组:

输出是一个字典,所以我可以通过以下方式访问特定元素:

但这似乎并不那么聪明。

有更好的方法,例如,为每组重采样获取 1 个 DataFrame?

我知道可以循环重采样为:

但这不允许我比较不连续的组,或者至少不容易。

有什么好的技巧来处理这个问题吗?

0 投票
0 回答
39 浏览

python - 熊猫有限的重新采样/窗口替换多行值

我正在处理光伏组件的天气数据。我得到的辐照度数据集(常规时间序列,1 秒数据)显示了该领域经常出现的一个问题:有时,零值在不应该出现的情况下(白天)出现,例如由于仪器或数据写入错误。

我过去有效的解决方案如下:

其中PoA:原始,有问题,,PoA_corr我尝试纠正错误。

然而,从下图可以看出,并非所有错误点都得到了适当的纠正:问题在于,在该点PoA == 0 之前和之后的 1-4 个点也是不正确的(即图中的“V”形一个点 ==0 的数据需要用前后“V”点之间的插值线替换)。

前向填充问题

我有一些想法,但对于哪个是最好的,哪个是最 Pythonic(或能够做到)感到困惑。

  1. 获取索引列表 where PoA == 0,查看上方 3 秒(行),然后替换 6-8 秒(=6-8 行)的数据。我设法在白天使用找到点列表,between_time然后使用 a 找到上面的点timedelta但我不知道如何替换/覆盖随后的 6-8 行(或在点“X-4”和“ X+4",其中 X 是PoA == 0. 的位置。df 很大(2.3 GB),所以我不愿意对此使用 for 循环。目前,我的日期时间列表中 PoA == 0 在白天是发现为:

  2. 对数据进行某种形式的移动窗口,以便如果窗口内的任何值 == 0,则 => 在窗口的第一个值和最后一个值之间进行插值。在这里,我对如何做到这一点感到困惑。

是在熊猫中找到解决方案,还是建议使用 numpy 或纯 python?

0 投票
0 回答
44 浏览

pandas - 平均熊猫数据框:重新采样,插值?

我的眼动追踪数据的结构如下图所示:

https://gist.github.com/Zahra-on-Github/729d6080cd481072dae00c7a53c004cc

眼动追踪数据在记录时以 120Hz 采样。对我来说重要的变量是“diameter_3d”。

对于记录参与者的每个会话,我都有这个 csv 文件。我需要在会话中平均“diameter_3d”。

我是否认为我首先必须重新采样数据(例如,将其上采样到 1000Hz)并对其进行插值,以便能够对它们进行平均?

如果是这样,您能否告诉我如何以符合我的数据结构的方式使用“重新采样”和“插值”功能(或您建议的任何其他功能)?

0 投票
0 回答
42 浏览

time-series - 如何将python中的时间序列数据重新采样为不规则间隔

我有每小时间隔的时间序列数据集。我想将数据重新采样为自定义的不规则间隔。我需要将数据转换为指定的时间。这是我的数据:

我尝试使用以下代码重新采样到 4H:

上面的代码有效。但是,如果我想以不规则的间隔重新采样,即 2H、4H、5H、1H、5H、3H,然后是 4H 而不是每 4H,我该怎么办?

0 投票
1 回答
102 浏览

python - Python pandas 重新采样到不细分为 24 小时周期的周期

我有一个带有高频(秒或分钟)股票数据的熊猫数据框。

我可以轻松地将这些数据重新采样为平均细分为 24 小时(或 1440 分钟/天)的分钟周期。

您如何在每天 1440 分钟的时间段内执行此操作?例如规则 = '65T'

典型的美国股票数据从东部时间 9:30 到 16:00。对于 65 分钟的条形图,我希望重新采样以下时间段:

0 投票
1 回答
34 浏览

python - 熊猫检测过日日期

我有一个看起来像这样的数据:

时间 数据
13:45:00 数据 1
13:45:03 数据 2
13:45:14 数据 3
13:45:22 数据 4
13:45:24 数据 5
00:00:03 资料 6
00:00:26 资料 7

数据有超过一天的数据,但它只包含时间但没有日期,日期我必须手动为数据框分配一个新列并将其与时间结合使用

但是这种方法只能分配一天,我希望程序可以在上午 12 点以上自动添加 1 天。此外,你可以看到从 13:45:00 到 13:45:03,它们之间有 3 秒的时间间隔,我想填补每个时间间隔,并且能够显示每一秒的数据

期望的输出:

约会时间 数据
2021/4/19 13:45:00 数据 1
2021/4/19 13:45:01 数据 1
2021/4/19 13:45:02 数据 1
2021/4/19 13:45:03 数据 2
2021/4/19 13:45:04 数据 2
... ...
2021/4/20 00:00:01 数据 5
2021/4/20 00:00:02 数据 5
2021/4/20 00:00:03 资料 6
2021/4/20 00:00:04 资料 6

我已经尝试过 resample 函数来完成这项工作,但是 resample 总是会在重新采样数据之前进行排序,导致 00:00:03 的行将位于第一行(00:00:03 应该是第二天,但是该函数错误地将它们编译为一天)。有没有办法让熊猫识别这个数据集包含超过一天的数据,如果超过上午 12 点,它会自动加上一天的日期?