#python #pandas #dataframe #data-analysis
#python #pandas #фрейм данных #анализ данных
Вопрос:
У меня есть набор данных как таковой, и я хочу построить гистограмму, показывающую различия в заполнении между rural and urban
состояниями всех упомянутых состояний.
Я попробовал использовать groupby —
Literacy_States=Rural_Urban[['Name','TRU','M_LIT','F_LIT']]
Literacy_States=Literacy_States.groupby(['Name','TRU'])['M_LIT','F_LIT'].count().unstack('TRU').plot.bar()
Но результат, который я получаю, выглядит так —
Пожалуйста, помогите мне с этим кодом. Я ожидаю чего-то вроде-
С male female
заменой на Rural Urban
Ссылка на набор данных- https://github.com/Irene-123/Data-sets/blob/main/state_dist_sc.xls
Комментарии:
1. Разместите образец фрейма данных в виде текста, а не изображения.
2. Я добавил ссылку на этот набор данных @Vishnudev
3. Я проверил общий набор данных, вы уверены, что он включает столбец, имеющий такие значения, как Private, Self-emp-inc и т. Д., Который вы используете в качестве оси x на ожидаемом графике?
4. По оси x
Name
используется столбец дляstates
@SAL5. Но этот столбец также включает города.
Ответ №1:
Удалите ненужную итоговую строку из данных и получите строки, которые являются состояниями
Literacy_States = Literacy_States[(Literacy_States.TRU != 'Total') amp; (Literacy_States.Level == 'State')].copy()
Создайте столбец для общей совокупности
Literacy_States['population'] = Literacy_States[['M_LIT', 'F_LIT']].sum(axis=1)
Постройте график численности населения в городских и сельских районах на основе столбца Name
Literacy_States.groupby(['Name', 'TRU'])['population'].sum().unstack(1).plot.bar(rot=45)