Мне было интересно, может ли кто-нибудь помочь мне с тем, как сделать гистограмму, показывающую частоты значений в серии Панд.
Я начну с формы данных Pandas DataFrame (2000, 7) иоттуда я извлекаю последний столбец.Столбец имеет форму (2000,).
Записи в Серии, которые я упомянул, варьируются от 0 до 17, каждая с разными частотами, и я попытался построить их с помощью гистограммы, но столкнулся с некоторыми трудностями.Вот мой код:
# First, I counted the number of occurrences.
count = np.zeros(max(data_val))
for i in range(count.shape[0]):
for j in range(data_val.shape[0]):
if (i == data_val[j]):
count[i] = count[i] + 1
'''
This gives us
count = array([192., 105., ... 19.])
'''
temp = np.arange(0, 18, 1) # Array for the x-axis.
plt.bar(temp, count)
В последней строке кода я получаю сообщение о том, что the objects cannot be broadcast to a single shape.
В конечном итоге мне нужна столбчатая диаграмма, где каждый столбец соответствуетцелочисленное значение от 0 до 17, а высота каждого столбца (то есть ось y) представляет частоты.
Спасибо.
ОБНОВЛЕНИЕ
Я решил опубликовать фиксированный код, используя предположения, что людилюбезно дать ниже, на тот случай, если кто-нибудь, столкнувшийся с подобными проблемами, сможет увидеть мой исправленный код в будущем.
data = pd.read_csv("./data/train.csv") # Original data is a (2000, 7) DataFrame
# data contains 6 feature columns and 1 target column.
# Separate the design matrix from the target labels.
X = data.iloc[:, :-1]
y = data['target']
'''
The next line of code uses pandas.Series.value_counts() on y in order to count
the number of occurrences for each label, and then proceeds to sort these according to
index (i.e. label).
You can also use pandas.DataFrame.sort_values() instead if you're interested in sorting
according to the number of frequencies rather than labels.
'''
y.value_counts().sort_index().plot.bar(x='Target Value', y='Number of Occurrences')

Тамне было необходимости использовать циклы for
, если мы используем методы, встроенные в библиотеку Pandas.
Конкретные методы, которые были упомянуты в ответах: pandas.Series.values_count()
, pandas.DataFrame.sort_index()
и pandas.DataFrame.plot.bar()
.