Построение групповых и сводных таблиц Pandas

#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 @SAL

5. Но этот столбец также включает города.

Ответ №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)
 

введите описание изображения здесь