#python #dataset #categories #jupyter-notebook
#python #набор данных #Категории #jupyter-ноутбук
Вопрос:
У меня есть два набора данных, в которых оба содержат данные следующим образом:
Набор данных 1:
Country Year Cause Gender Deaths
2090 2011 A000 1 70340
2090 2010 A001 2 53449
2090 2009 A002 1 1731
2090 2008 A003 2 1270
2090 2007 A004 1 148
2310 2011 A000 2 172
2310 2010 A001 1 24
2310 2009 A002 2 20
2310 2008 A003 1 27
2660 2013 A004 2 21
2660 2012 A005 1 88
2660 2011 A006 2 82
Набор данных 2:
Country Year Cause Gender Deaths
2090 1999 B529 1 557
2090 1995 A001 2 234
2090 1996 B535 1 29
2090 1997 A002 2 33
2090 1998 B546 1 3224
2090 1999 B556 2 850
2310 1995 B555 1 319
2310 1996 A003 2 143
2310 1997 B563 1 251
2310 1998 B573 2 117
2660 1997 B561 1 244
2660 1998 A002 2 115
2660 1999 A001 1 10
2660 2000 B569 2 2
Мне нужно создать категории в кодах столбцов причин, которые относятся к причинам смерти. Но мне нужно создать эту категорию, используя эти объединенные причины из обоих наборов данных отдельно, например
Категория дорожно-транспортных происшествий: из набора данных 1: A001, A003
Категория дорожно-транспортных происшествий: из набора данных 2: B569, B555
и причины обоих из них должны быть включены в категорию дорожно-транспортных происшествий.
Они должны быть включены в каждую категорию для каждого набора данных (не объединены), например: Дорожно-транспортные происшествия: A001, A003, B569, B555
Это потому, что, скажем, например, A001. В наборе данных 1 A001 для автомобильных аварий, но в наборе данных 2 A001 означает сердечный приступ, и я не хочу, чтобы сердечный приступ попал в категорию дорожно-транспортных происшествий. Но когда категория создается из обоих наборов данных (т. Е. Дорожно-транспортных происшествий: A001, A003, B569, B555), то A001 из обоих наборов данных включается в категорию Дорожно-транспортных происшествий.
Цель этого вопроса — увидеть, как разные категории различаются на протяжении многих лет с точки зрения смертности — мне не разрешено объединять оба набора данных вручную не на Python. Мне также не разрешено использовать какие-либо из распространенных пакетов, таких как Pandas, Numpy и т.д.
Спасибо за помощь в расширенном
Ответ №1:
Итак, я понимаю вашу проблему (поправьте меня, если я ошибаюсь), у вас есть два набора данных, оба из которых имеют столбец / переменную «Причина». Но кодировка этого столбца «Причина» в двух наборах данных различна.
В Dataset1, возможно, кодировка гласит:
Road Traffic Accidents Category: A001, A003
Heart Attack Category: C001, C002 #made up encoding
В Dataset2, возможно, кодировка гласит:
Road Traffic Accidents Category: B569, B555
Heart Attack Category: A001
Hurricane Cause of Death Category: E941 # made up encoding
Вы хотите создать согласованную категорию, чтобы вызвать сопоставление кодировки, которое работает для двух наборов данных.
Я лично считаю, что словарь Python является подходящей структурой данных для этой задачи. Я предполагаю, что вы можете загрузить сопоставление категории и причины для обоих наборов данных.
data1_cat_cause = {'Road Traffic Accidents': ['A001', 'A003'],
'Heart Attack': ['C001', 'C002']}
data2_cat_cause = {'Road Traffic Accidents': ['B569', 'B555'],
'Heart Attack': ['A001'],
'Hurricane Cause of Death': ['E941']}
category_combined = set(data1_cat_cause.keys()) | set(data2_cat_cause.keys())
cat_cause_combined = {}
for category in category_combined:
cat_cause_combined[category] = {'Dataset1':data1_cat_cause.get(category),'Dataset2':data2_cat_cause.get(category)}
Это дало бы следующую информацию, хранящуюся в переменной «cat_cause_combined»:
Dataset1 encoding Dataset2 encoding
Road Traffic Accidents : ['A001', 'A003'] ['B569', 'B555']
Heart Attack : ['C001', 'C002'] ['A001']
Hurricane Cause of Death: None ['E941']
Я надеюсь, что правильно понял вашу проблему, и я надеюсь, что это решение решит вашу проблему.
Комментарии:
1. Привет, большое тебе спасибо! Я думаю, вы поняли, о чем я говорю 🙂 Но когда я пытаюсь, я получаю ошибки. На самом деле это похоже на дорожно-транспортные происшествия
2. Dataset1_cat_cause = {‘Дорожно-транспортные происшествия’: [‘V01’, ‘V02’, ‘V03’, ‘V04’, ‘V05’, ‘V06’, ‘V07’, ‘V08’, ‘V09’, ‘V10’, ‘V11’, ‘V12’, ‘V13’, ‘V14’, ‘V15’, ‘V16’, ‘V17’, Dataset2_Data_ICD9_cat_cause = {‘Дорожно-транспортные происшествия’: [‘B47’]}
3. Я получаю эту ошибку: файл «<ipython-input-49-2b8e5308e583>», строка 3 Dataset2_Data_ICD9_cat_cause = {‘Дорожно-транспортные происшествия’: [‘B47’]} ^ Ошибка синтаксиса: EOL при сканировании строкового литерала
4. Извините, я это исправил 🙂 Пробуем второй блок кода сейчас
5. Я думаю, что это сработало!! Большое вам спасибо — я так долго зацикливался на этом! Как я могу проверить, что это сработало? Просто чтобы быть уверенным