Я не уверен, что это то, что вам нужно ИЛИ вы хотите сначала groupby
значения для каждого пользователя, а затем отобразить общее число в порядке убывания.
x = x.sort_values('number',ascending=False)
plt.bar(range(len(x['users'])), x['number'], color="blue")
plt.xticks(range(len(x['users'])), x['users'])
plt.ylabel('Numbers')
Вывод

Если вы хотите построить среднее значение для каждого пользователя, используйте следующий код:
x1 = x.groupby('users').mean().reset_index()
plt.bar(range(len(x1)), x1['number'], color="blue")
plt.xticks(range(len(x1)), x1['users'])
plt.ylabel('Mean')
Вывод

Что, если вы не сортируете или не группируете по : присутствуют все столбцы, кроме васне вижу разных баров для одного и того же значения x, потому что alpha=1
по умолчанию.Я использовал alpha=0.2
, чтобы подчеркнуть мою точку зрения.Теперь вы видите, что на user1
есть два бара друг за другом.
import pandas as pd
df = pd.DataFrame({'number': [10,34,56,45,51], 'user': 'user1','user2','user3','user4','user1']})
plt.bar(df['user'], df['number'], color="blue", linewidth =2, edgecolor='black' , alpha = 0.2)
Выход
