我在pandas. 我想在绘制直方图时删除频率较低的某些值范围(不是单个值)。对于下面的图像,假设我想删除与计数/频率低于 20 相对应的 Dataframe 变量的所有值。有人对此有任何解决方案吗?# PR has value between 0 to 1700 data['PR'].hist(bins = 160) #image on the leftdata_openforest['PR'].hist(bins = 160) #image on the right
1 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
像这样使用 pd.cut 应该可以:
out = pd.cut(data_openforest['PR'], bins=160)
counts = out.value_counts(sort=False)
counts[counts > 20].plot.bar()
plt.show()
如果你想过滤你的 DataFrame,你必须这样做:
data_openforest['bin'] = pd.cut(data_openforest['PR'], bins=160)
bin_freq = data_openforest.groupby('bin').count()
data_openforest = data_openforest.merge(bin_freq,
on='bin',
how='left',
suffixes=("_bin",
"_bin_freq"))
然后您可以轻松过滤您的 DataFrame。然后你将不得不做一个条形图,而不是一个历史。
添加回答
举报
0/150
提交
取消