Как построить график значений в столбце в Pandas DataFrame, сгруппированных по другому столбцу - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь создать график всех значений в столбце, сгруппированных по другому столбцу в порядке убывания (отсортированный по третьему столбцу)

Я создал небольшой пример:

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()

The Graph from my code

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

Я также попытался добавить строку:

df['group'] = df['group'].astype('category')

до построения и получения графика:

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

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