问题标签 [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.
python-3.x - 如何以给定的频率计算两个日期之间的样本数
datetime
和和给定频率字符串有两个实例(例如: M
, Q
, W
, B
, W-MON
, D
, A
, Y
, ...)。查找这两个日期之间的样本数量的最有效方法是什么?我可以通过以下方式来实现它,这对我来说实例化 pandas 数据框来获取它看起来效率低下:
python-3.x - 如何使用 groupby 和重新采样的数据创建一周中的几天的热图
我有很多观察数据。每个观察都有它出现的星期几(1=星期一,2=星期二等)和它出现的时间(例如,“12:00”、“14:30”、“18:26”等)。
日期 | 时间 | day_of_week | x 列 | y 列 |
---|---|---|---|---|
2020-06-04 | 12:00 | 1 | 价值1 | 价值1 |
2020-06-04 | 14:30 | 1 | 价值2 | 价值2 |
我用它制作了另一张桌子df.groupby('day_of_week').resample('2h').size()
,结果是这样的:
时间\day_of_week | 0 天 00:00:00 | 0 天 02:00:00 | 0 天 04:00:00 |
---|---|---|---|
0 | 751 | 738 | 399 |
1 | 726 | 973 | 190 |
2 | 548 | 480 | 170 |
(以 day_of_week 作为索引)
当我尝试将 sns.heatmap() 直接创建到该表时,它返回:
如您所见,一周中的日子在 y 轴上,它显然以纳秒为单位划分时间。如何从中制作热图或按一周中的几小时和几天制作计数观察的热图?
提前致谢!
python - Groupby 并使用 Python 中的前向填充以 1 分钟的频率重新采样
我想以按列分组的频率data
使用前向填充对列进行重新采样:ffill
1min
df
id
df
:
预期输出:
类似这篇文章的东西,但我试过了:
并且data
列仅返回NaN
值:
编辑:
- 第二行
df
timestamp
从2017-01-02 12:04:43.240
变为2017-01-02 16:04:43.240
,即属于同一行的行id
应该被排序。 - 我误认为预期输出中的第二个是最小的,但@jezrael 的答案是正确的。
python - Python - 计算每月的总金额或销售量
我有一个包含多个 OrderId、销售日期、销售产品等的数据框。我目前正在尝试计算销售较少摩托车的月份。
这是我编写的代码,尝试使用 group by 计算每个月的总销售额:
显示的警告是:: 10:SettingWithCopyWarning:试图在 DataFrame 中的切片副本上设置值。尝试使用 .loc[row_indexer,col_indexer] = value 查看文档中的注意事项:https ://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a -复制摩托车[' ORDERDATE '] = pd.to_datetime(摩托车['ORDERDATE'])
显示的错误是: 错误:TypeError:仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但获得了“Int64Index”的实例
我也试过了,但这都不起作用。
df.head(10) 结果:
python - 在Python中使用前向和后向填充窗口进行分组和重新采样
我想以按列分组的频率使用前向填充ffill
和后向填充对数据列进行重新采样。bfill
1min
df
id
df
:
我用了:
如何通过从现在起过去 10 天的窗口内重新采样来添加附加条件?所以最后一次timestamp
读数是现在,第一次timestamp
读数是datetime.datetime.now() - pd.to_timedelta("10day")。目标是为每组提供相同数量的读数id
。
更新:
试过:
并返回:
所以我不应该申请reindex
对象groupby
,有没有办法可以解决它?
python - 在Python中按指定时间间隔分组并重新采样
如何在时间间隔内使用前向填充和后向填充(使用)以频率重新采样df
,1min
即第一个时间戳是,最后一个时间戳是?ffill
bfill
id
groupby('id')
2017-01-01 00:00:00
2017-01-05 00:00:00
2017-01-01 00:00:00
2017-01-05 00:00:00
我试过:
但这并没有指定所需的时间间隔2017-01-01 00:00:00
- 2017-01-05 00:00:00
。
然后我尝试了:
并发现错误:
更新:
对于样本数据df_sub_data
:
我试过:
它返回了一个形状的数据框(30243, 3)
我想知道,我不应该期望7天的分钟数(10080, 3)
给出的形状吗?7 x 24 x 60
样本数据由 1 的数据组成id == 100
。
python - Pandas:如何获取一列中每个项目的最后一个每日值并从每行中的值中减去它
考虑以下具有时间戳索引的数据帧,该时间戳索引可能具有重复(即非唯一)索引值、指示资产的另一列以及具有该时间戳在该时间戳处的资产值的另一列。
对于每一天,我想获得每项资产的最终价值,并从每行中的价值中减去每项资产的最终价值。所以在上表中,资产 A 的最后日值为 1(时间 2021-03-18 14:00:00),而 B 为 2(时间 2021-03-18 14:30:00)。然后,我想从每行的相应资产价值中扣除这些价值。所以在第一行我想计算new_value
等于 4-1 = 3,第二行是 1-2 = -1。
考虑到某些指数值可能会重复,因为它们代表每种资产交易的时间,并且可能同时交易两种资产,我该怎么做。
python - 从几乎每周到每天重新采样熊猫数据框
重新采样此数据框的最简洁方法是什么:
...进入这个数据框:
注意: 12 月 8 日至 20 日之间为 12 天,20 日至 27 日之间为 7 天。
此外,为了明确我想要做的插值/重采样类型:
实际数据是分层的并且有多个列,但我想从一些我可以理解的东西开始:
python - 如何对具有零阶保持的分组数据帧进行重新采样?
我有一个带有一堆不同测量值的数据框(每个测量值在一measurements
列中都有一个唯一的 ID),并且每 10 毫秒采集一次测量样本。
现在我想对所有数据进行下采样,以便为所有测量“伪造”不同的采样时间,例如 40 毫秒。
我实现了重采样,如下所示,但现在我被困住了:我不想.mean()
在重采样器对象上执行聚合,因为这将处理来自相应 40 毫秒 bin 中所有样本的信息。
相反,我只想取重新采样的 40 毫秒 bin 中的第一个值并保持它 - 基本上,只需每 40 毫秒选择一次最新的给定值。
有没有一种优雅的方式来做到这一点?
编辑:找到了。只是被忽略.first()
为实现我在文档中想要的内置方式:https ://pandas.pydata.org/pandas-docs/version/0.25.1/reference/resampling.html#