df ['User']. Value_counts () вернет серию, содержащую количество уникальных значений столбца User.
Не анализируя подробно ваш код, вы можете исправитьэто путем индексации результата value_counts со счетчиком:
fig, ax1 = plt.subplots(figsize=(20,10))
graph = sns.countplot(ax=ax1,x='User', data=df)
graph.set_xticklabels(graph.get_xticklabels(),rotation=90)
i=0
for p in graph.patches:
height = p.get_height()
graph.text(p.get_x()+p.get_width()/2., height + 0.1,
df['User'].value_counts()[i],ha="center")
i += 1
С вашими образцами данных, получается следующий график:
Как подсказывает @ImportanceOfBeingErnest, следующий код создает тот же вывод с более простым кодом, используя саму переменную высоты вместо индексированного значения_counts:
fig, ax1 = plt.subplots(figsize=(20,10))
graph = sns.countplot(ax=ax1,x='User', data=df)
graph.set_xticklabels(graph.get_xticklabels(),rotation=90)
for p in graph.patches:
height = p.get_height()
graph.text(p.get_x()+p.get_width()/2., height + 0.1,height ,ha="center")