pandas сортировка по оси x с категориальными строковыми значениями - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь отсортировать категориальные переменные по оси x на графике pandas. Я попытался отсортировать данные из pandas, но я могу сортировать только по алфавиту. Я не вижу вариантов в сюжете, чтобы отсортировать его таким образом. Я пытаюсь получить ось х в следующем порядке: [пн, вт, ср, пт, пт, сб, вс]. Как мне это сделать?

df = data_df.groupby(['name1','weekday']).sum().reset_index()
s = (df.pivot_table(
        index='weekday', columns='name1', values='count', aggfunc='sum'))

s.plot(kind='bar', stacked=True,figsize=(20,10),rot=0)
plt.show()

enter image description here

Искать этот вывод

1 Ответ

1 голос
/ 26 марта 2020

Насколько я вижу, ваши df и s по сути одинаковы. Также вы можете reindex и затем построить график:

weekdays = ['Monday','Tuesday','Wednesday','Thursday',
            'Friday','Saturday','Sunday']
# sample data
np.random.seed(1)
data_df = pd.DataFrame({
    'name1':np.random.randint(0,3, 100),
    'weekday':np.random.choice(weekdays, 100),
    'count':np.random.randint(3,100)
})

# groupby and take sum
s = (data_df.groupby(['name1','weekday'])
       .sum().unstack('name1')
       .reindex(weekdays)                 # here is the key to get the correct order
)

# plot
s.plot.bar(stacked=True)

Вывод:

enter image description here

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