【发布时间】:2018-06-29 22:25:22
【问题描述】:
所以我有一个像这样的数据框:
[5232 rows x 2 columns]
0 2
0
2018-02-01 00:00:00 2018-02-01 00:00:00 435.24
2018-02-01 00:30:00 2018-02-01 00:30:00 357.12
2018-02-01 01:00:00 2018-02-01 01:00:00 301.32
2018-02-01 01:30:00 2018-02-01 01:30:00 256.68
2018-02-01 02:00:00 2018-02-01 02:00:00 245.52
2018-02-01 02:30:00 2018-02-01 02:30:00 223.20
2018-02-01 03:00:00 2018-02-01 03:00:00 212.04
2018-02-01 03:30:00 2018-02-01 03:30:00 212.04
2018-02-01 04:00:00 2018-02-01 04:00:00 212.04
2018-02-01 04:30:00 2018-02-01 04:30:00 212.04
2018-02-01 05:00:00 2018-02-01 05:00:00 223.20
2018-02-01 05:30:00 2018-02-01 05:30:00 234.36
而我目前能做的是替换一部分值(比如用NaN 随机替换 10%:
df_missing.loc[df_missing.sample(frac=0.1, random_state=100).index, 2] = np.NaN
我想做的是做同样的事情,但是对于大小为 x 的随机块,假设 10% 的数据应该被阻止 NaN。
例如,如果块大小为 4,并且比例为 30%,则上述数据帧可能如下所示:
[5232 rows x 2 columns]
0 2
0
2018-02-01 00:00:00 2018-02-01 00:00:00 435.24
2018-02-01 00:30:00 2018-02-01 00:30:00 357.12
2018-02-01 01:00:00 2018-02-01 01:00:00 NaN
2018-02-01 01:30:00 2018-02-01 01:30:00 NaN
2018-02-01 02:00:00 2018-02-01 02:00:00 NaN
2018-02-01 02:30:00 2018-02-01 02:30:00 NaN
2018-02-01 03:00:00 2018-02-01 03:00:00 212.04
2018-02-01 03:30:00 2018-02-01 03:30:00 212.04
2018-02-01 04:00:00 2018-02-01 04:00:00 212.04
2018-02-01 04:30:00 2018-02-01 04:30:00 212.04
2018-02-01 05:00:00 2018-02-01 05:00:00 223.20
2018-02-01 05:30:00 2018-02-01 05:30:00 234.36
我发现我可以通过以下方式获得块数:
number_of_samples = int((df.shape[0] * proporition) / block_size)
但我不知道如何实际创建缺失的块。
我看过this 的问题,这很有帮助,但有两个警告:
- 它不会用 NaN 值修改原始数据帧,只是返回样本。
- 无法保证样本不会重叠(我希望避免重叠)
有人可以解释如何将答案转换为上述几点(或解释不同的解决方案)吗?
【问题讨论】:
标签: python pandas missing-data