Манипулировать гистограммой в пандах - PullRequest
1 голос
/ 18 октября 2019

У меня большой DataFrame в pandas. Я хочу удалить определенный диапазон значений (не одно значение) с более низкой частотой при построении гистограммы.

Для изображения ниже, скажем, я хочу удалить все значенияпеременная кадра данных, которая соответствует количеству / частоте ниже 20. У кого-нибудь есть какое-либо решение для этого?

# PR has value between 0 to 1700 
data['PR'].hist(bins = 160) #image on the left
data_openforest['PR'].hist(bins = 160) #image on the right

enter image description here enter image description here

1 Ответ

1 голос
/ 18 октября 2019

Использование 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. Затем вам придется составить гистограмму, а не историю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...