Сохранить количество категориальных переменных в строке данных, где каждая строка является группой - PullRequest
0 голосов
/ 30 апреля 2020

Я работаю с данными из Обследования рабочей силы Канады. Он имеет следующие столбцы:

Index(['SURVYEAR', 'SURVMNTH', 'LFSSTAT', 'PROV', 'CMA', 'AGE_12', 'AGE_6',
       'SEX', 'MARSTAT', 'EDUC', 'MJH', 'EVERWORK', 'FTPTLAST', 'COWMAIN',
       'IMMIG', 'NAICS_21', 'NOC_10', 'NOC_40', 'YABSENT', 'WKSAWAY',
       'PAYAWAY', 'UHRSMAIN', 'AHRSMAIN', 'FTPTMAIN', 'UTOTHRS', 'ATOTHRS',
       'HRSAWAY', 'YAWAY', 'PAIDOT', 'UNPAIDOT', 'XTRAHRS', 'WHYPT', 'TENURE',
       'PREVTEN', 'HRLYEARN', 'UNION', 'PERMTEMP', 'ESTSIZE', 'FIRMSIZE',
       'DURUNEMP', 'FLOWUNEM', 'UNEMFTPT', 'WHYLEFTO', 'WHYLEFTN', 'DURJLESS',
       'AVAILABL', 'LKPUBAG', 'LKEMPLOY', 'LKRELS', 'LKATADS', 'LKANSADS',
       'LKOTHERN', 'PRIORACT', 'YNOLOOK', 'TLOLOOK', 'SCHOOLN', 'EFAMTYPE',
       'AGYOWNK', 'FINALWT'],
      dtype='object')

Каждый столбец является категориальной переменной. Например, провинция имеет десять уникальных значений (числа от 1 до 10), каждое из которых соответствует отдельной канадской провинции. Аналогично, NOC_10 является категориальной переменной для таких профессий, как профессии менеджеров или работники здравоохранения. Каждая строка в кадре данных имеет различную комбинацию этих категориальных переменных. Таким образом, FINALWT - это число людей в Канаде с указанными c характеристиками (эта переменная FINALWT рассчитывается по результатам обследования рабочей силы в Канаде).

Я хочу создать фрейм данных, в котором все столбцы значения из каждой категориальной переменной для каждой провинции в конкретном c месяце определенного c года. Например, первая строка будет первой провинцией в первом месяце первого года с каждой категорией (ie из NOC_10) столбцом (ie из NOC_10_1, NOC_10_2, NOC_10_3, ..., NOC_10_10). Это было бы то же самое для каждого столбца.

Я начал с группы по методу:

count_df = pd.DataFrame()
for col in data.columns[4:]:
    count_df[col] = data.groupby(["SURVYEAR", "SURVMNTH", "PROV", col])['FINALWT'].sum()

Однако это объединяет данные и (по некоторым причинам) группы по первым столбец, который в данном случае является "CMA".

Я думал, что функция get_dummies могла бы быть полезной, но изо всех сил пытался применить ее соответствующим образом.

Заранее спасибо.

...