Форум сайта python.su
0
На основе данных таблицы построен график ящиков с усами.
Как упорядочить города слева направо по возрастанию значения относительной заболеваемости?
import pandas as pd import matplotlib.pyplot as plt df = pd.read_excel(r'C:\Users\cinem\Desktop\нир\3-6.xlsx') (df.pivot_table(columns='town_name', index='cld_year', values='относительная заболеваемость', aggfunc='mean', fill_value=0) .plot.box(rot=90, figsize=(16,10))) plt.tight_layout() plt.show()
Отредактировано nightwing95 (Дек. 18, 2018 11:44:22)
Прикреплённый файлы:
BV5Gg.png (87,4 KБ)
Офлайн
35
Нужно определиться по какому параметру делать сортировку: по среднему значению, по разбросу вокруг среднего или по медиане.
Если делать сортировку по медиане, на вашем рисунке медиана, похоже, это зелененькая линия, которая находится внутри прямоугольничков, то это все можно сделать так:
pivoted_data = df.pivot_table(columns='town_name', index='cld_year', values='относительная заболеваемость', aggfunc='mean', fill_value=0) sort_inds = pd.np.argsort(pivot.median(axis=0)) # pivot.mean, pivot.std -- alternatives pivoted_data.iloc[:, sort_inds].boxplot(rot=90, figsize=(16,10)) plt.show()
Офлайн