问题描述
我有地理数据的pandas DataFrame,其中包含以米表示的纬度和经度列。
我想将纬度和经度分箱为 5 米,所以我执行如下。
df_geodata['lat_meter']=(df_geodata['lat_meter']//5)*5
df_geodata['lon_meter']=(df_geodata['lon_meter']//5)*5
此外,我想对每个 bin 执行最大 5-ea 随机采样。于是我做了如下操作。
df_sampled=df_geodata.groupby(['lat_meter','lon_meter'],as_index=False).apply(lambda obj: obj.loc[np.random.choice(obj.index,5),:])
df_sampled=df_sampled.reset_index(drop=True).drop_duplicates()
我为每个 bin 使用了这个 np.random.choice,我也为每个 bin 删除了重复项。 但是,我最近发现,当我使用相当大的数据(如 300GB,170,000,000 行)时,这会花费太多时间来执行......如 5 小时?
我认为,为每个 bin 执行 np.random.choice 需要太多时间......(其中 np 是 numpy)。 有没有更有效的方法来对 2D 分箱数据执行随机采样?
特别是,我认为不使用 numpy 而只使用 Pandas 可能更有效。我想知道更有效和快速的方法。可能吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)