Как создать одну категорию из 2 наборов данных в Python

#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. Я думаю, что это сработало!! Большое вам спасибо — я так долго зацикливался на этом! Как я могу проверить, что это сработало? Просто чтобы быть уверенным