Я пытаюсь создать график всех значений в столбце, сгруппированных по другому столбцу в порядке убывания (отсортированный по третьему столбцу)
Я создал небольшой пример:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
groups = list(range(1, 6)) + list(range(20, 25))
groups *= 10
df = pd.DataFrame(
{'score': np.random.rand(100), 'group': groups, 'id': [f'id-{i}' for i in range(100, 200)]})
unique_groups = len(df['group'].unique())
mean_df = df.groupby('group').mean().rename({'score': 'group_avg'}, axis=1)
df = df.merge(mean_df, on='group').sort_values('group_avg')
>>df.head(15)
score group id group_avg
99 0.221270 24 id-199 0.380676
90 0.116831 24 id-109 0.380676
91 0.317264 24 id-119 0.380676
92 0.164701 24 id-129 0.380676
93 0.638165 24 id-139 0.380676
98 0.813191 24 id-189 0.380676
95 0.360128 24 id-159 0.380676
96 0.740481 24 id-169 0.380676
97 0.215156 24 id-179 0.380676
94 0.219574 24 id-149 0.380676
69 0.084655 21 id-196 0.395563
68 0.173920 21 id-186 0.395563
67 0.271351 21 id-176 0.395563
66 0.809964 21 id-166 0.395563
60 0.031930 21 id-106 0.395563
df.set_index('group').plot(legend=True, marker='v', linestyle='None', markerfacecolor='None', grid=True)
plt.show()

Требуемый вывод должен быть в порядке убывания (отсортировано по group_avg)
и без разрыва в середине.
Я пытаюсь достичь графика всех значений в группе со средним значением в качестве еще одной точки для каждой группы.
Сортировка по типу гистограммы, но с точками данных вместо столбцов
Я также попытался добавить строку:
df['group'] = df['group'].astype('category')
до построения и получения графика:

Проблема здесь в том, что ось X имеет диапазон 100 точек вместо 10.