问题标签 [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.
pandas-resample - 使用熊猫重采样时,用于重采样的日期时间列消失了
希望这是一个容易的。使用任一...
dfnew = dfjoin.set_index('Time').resample('H').median()
或者
dfnew = dfjoin.resample('H',on="Time").median()
dfnew 中不存在“时间”列。(在某种程度上答案是显而易见的,我提前道歉。)
python - 如果日期时间索引的差异小于熊猫系列的 5 分钟,则分组
我想执行一个大熊猫时间序列的 groupby.first() ,其中日期时间索引几乎是连续的,几乎小于 5 分钟的差异。我看过很多材料,但如果日期时间不是连续的,就像我的例子一样:
我想要的输出应该是:
任何人都可以帮助我吗?
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 建议)创建另一列,但仅当总付款少于总费用时才适用。但是,当总付款等于总费用时,我需要从付款开始到月底相应地分配付款(开始加上以月为单位的条款)。
python-3.x - 熊猫插值给出奇怪的结果
我正在使用 Pandas 及时插值数据点,但是在重新采样和插值时,在使用不同的重采样率时,对于相同的插值时间,我会得到不同的结果。
这是一个测试示例:
a
数据框和数据框应在b
每分钟预测相同的值,但在大多数情况下,此时它们会有所不同。
有谁知道这可能是什么原因造成的?在绘制完整结果时,似乎在分钟内重新采样会导致 pandas 忽略不在分钟内的时间戳中的数据(例如 12:01:40 和 12:03:20)。
python - Pandas 重新采样而不聚合
我已经尝试了很多方法来找到一种方法,该方法允许我在没有任何聚合的情况下获得重采样或组的所有组,例如从:
我能够通过以下方式获得特定重采样的每一组:
输出是一个字典,所以我可以通过以下方式访问特定元素:
但这似乎并不那么聪明。
有更好的方法,例如,为每组重采样获取 1 个 DataFrame?
我知道可以循环重采样为:
但这不允许我比较不连续的组,或者至少不容易。
有什么好的技巧来处理这个问题吗?
python - 熊猫有限的重新采样/窗口替换多行值
我正在处理光伏组件的天气数据。我得到的辐照度数据集(常规时间序列,1 秒数据)显示了该领域经常出现的一个问题:有时,零值在不应该出现的情况下(白天)出现,例如由于仪器或数据写入错误。
我过去有效的解决方案如下:
其中PoA
:原始,有问题,,PoA_corr
我尝试纠正错误。
然而,从下图可以看出,并非所有错误点都得到了适当的纠正:问题在于,在该点PoA == 0
之前和之后的 1-4 个点也是不正确的(即图中的“V”形一个点 ==0 的数据需要用前后“V”点之间的插值线替换)。
我有一些想法,但对于哪个是最好的,哪个是最 Pythonic(或能够做到)感到困惑。
获取索引列表 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 在白天是发现为:对数据进行某种形式的移动窗口,以便如果窗口内的任何值 == 0,则 => 在窗口的第一个值和最后一个值之间进行插值。在这里,我对如何做到这一点感到困惑。
是在熊猫中找到解决方案,还是建议使用 numpy 或纯 python?
pandas - 平均熊猫数据框:重新采样,插值?
我的眼动追踪数据的结构如下图所示:
https://gist.github.com/Zahra-on-Github/729d6080cd481072dae00c7a53c004cc
眼动追踪数据在记录时以 120Hz 采样。对我来说重要的变量是“diameter_3d”。
对于记录参与者的每个会话,我都有这个 csv 文件。我需要在会话中平均“diameter_3d”。
我是否认为我首先必须重新采样数据(例如,将其上采样到 1000Hz)并对其进行插值,以便能够对它们进行平均?
如果是这样,您能否告诉我如何以符合我的数据结构的方式使用“重新采样”和“插值”功能(或您建议的任何其他功能)?
time-series - 如何将python中的时间序列数据重新采样为不规则间隔
我有每小时间隔的时间序列数据集。我想将数据重新采样为自定义的不规则间隔。我需要将数据转换为指定的时间。这是我的数据:
我尝试使用以下代码重新采样到 4H:
上面的代码有效。但是,如果我想以不规则的间隔重新采样,即 2H、4H、5H、1H、5H、3H,然后是 4H 而不是每 4H,我该怎么办?
python - Python pandas 重新采样到不细分为 24 小时周期的周期
我有一个带有高频(秒或分钟)股票数据的熊猫数据框。
我可以轻松地将这些数据重新采样为平均细分为 24 小时(或 1440 分钟/天)的分钟周期。
您如何在每天 1440 分钟的时间段内执行此操作?例如规则 = '65T'
典型的美国股票数据从东部时间 9:30 到 16:00。对于 65 分钟的条形图,我希望重新采样以下时间段:
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 点,它会自动加上一天的日期?