#python #transpose
#python #транспонировать
Вопрос:
У меня есть данные о носителях многих языков в разных штатах / провинциях, для каждого штата количество носителей языка указывается правительством.
Я хочу суммировать / транспонировать, как показано на скриншоте. Где в каждой паре язык / состояние нет. speakers в списке.
Что можно сделать в Python или каком-либо другом инструменте?
Образец данных CSV
State,Language,Speakers
ANDHRA PRADESH, Adi,37,
ARUNACHAL PRADESH, Adi,105158,
ASSAM, Adi,2992,
BIHAR, Adi,7,
CHHATTISGARH, Adi,6,
DADRA amp; NAGAR HAVELI, Adi,1,
GOA, Adi,1,
GUJARAT, Adi,3,
HARYANA, Adi,44,
HIMACHAL PRADESH, Adi,13,
JAMMU amp; KASHMIR, Adi,10,
JHARKHAND, Adi,9,
KARNATAKA, Adi,61,
KERALA, Adi,24,
MADHYA PRADESH, Adi,283,
MAHARASHTRA, Adi,9,
MANIPUR, Adi,20,
MEGHALAYA, Adi,207,
MIZORAM, Adi,17,
NAGALAND, Adi,60,
NCT OF DELHI, Adi,20,
ODISHA, Adi,1,
PUDUCHERRY, Adi,5,
PUNJAB, Adi,21,
RAJASTHAN, Adi,758,
SIKKIM, Adi,1,
TAMIL NADU, Adi,9,
TRIPURA, Adi,3,
UTTAR PRADESH, Adi,25,
UTTARAKHAND, Adi,6,
WEST BENGAL, Adi,496,
ARUNACHAL PRADESH, Henchul,27720,
ASSAM, Henchul,548,
BIHAR, Henchul,6,
CHANDIGARH, Henchul,2,
GOA, Henchul,4,
GUJARAT, Henchul,16,
HIMACHAL PRADESH, Henchul,69,
JAMMU amp; KASHMIR, Henchul,3,
JHARKHAND, Henchul,714,
KARNATAKA, Henchul,7,
KERALA, Henchul,4,
MAHARASHTRA, Henchul,3,
MANIPUR, Henchul,3,
MEGHALAYA, Henchul,77,
MIZORAM, Henchul,2,
NAGALAND, Henchul,6,
NCT OF DELHI, Henchul,1,
ODISHA, Henchul,1,
PUNJAB, Henchul,2,
RAJASTHAN, Henchul,9,
UTTAR PRADESH, Henchul,27,
UTTARAKHAND, Henchul,1,
WEST BENGAL, Henchul,21,
Комментарии:
1. Добро пожаловать в Stack Overflow. Пожалуйста, постарайтесь не отправлять снимки экрана как часть вашего вопроса. Вам необходимо предоставить дополнительную информацию здесь. Самое главное, IMO, вам нужно сообщить нам, каков формат ваших данных и откуда они берутся. Если вы можете предоставить образцы данных в своем вопросе, это лучше всего. Вам также необходимо четко представлять, что вы хотите получить от своего кода. Учитывая ваш скриншот, я предполагаю, что вы хотите создать электронную таблицу? Это правда? Наконец, что вы уже пробовали? Если у вас есть какой-то написанный код, покажите его нам. — Python, вероятно, подойдет.
2. Спасибо, Стив, обязательно имейте это в виду. У меня есть данные в формате XLSX / CSV. Мне нужна сводка в любом из двух форматов. Я не слишком уверен, с чего начать, но я предположил, что SQL или Python могут это сделать.
3. Сколько столбцов в ваших данных? Можете ли вы опубликовать, возможно, первые 10-20 строк файла в формате CSV?
4. конечно, просто отредактировал сообщение, включив в него 3 столбца и образец данных
5. Я не понимаю, чем ваши данные образца отличаются от того, что вы говорите, что хотите в результате. Чем то, что вы хотите, отличается от того, что у вас уже есть? Я, наверное, просто глуп.
Ответ №1:
Предполагая, что State, Language и Speakers — это все столбцы в вашем фрейме данных, вы можете просто использовать pivot
import pandas as pd
df = pd.DataFrame(
{
'State': ['State1', 'State2', 'State3', 'State1', 'State2', 'State3', 'State1', 'State2'],
'Language': ['Lang1', 'Lang1', 'Lang1', 'Lang2', 'Lang2', 'Lang2', 'Lang3', 'Lang3'],
'Speakers': [10, 100, 400, 1, 45, 100, 1000, 40]
}
)
df.pivot(index='State', columns=['Language'], values='Speakers')
Language Lang1 Lang2 Lang3
State
State1 10.0 1.0 1000.0
State2 100.0 45.0 40.0
State3 400.0 100.0 NaN
Комментарии:
1. Было бы полезно показать результат этого