如何在Python中从2个数据集创建一个类别

时间:2016-10-19 01:37:07

标签: python dataset categories jupyter-notebook

我有两个数据集,其中包含数据如下:

数据集1:

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

数据集2:

{{1}}

我需要在原因列代码上创建用于死亡原因的类别。但我需要将这两个数据集中的这些组合原因单独使用,例如。

道路交通事故类别:来自数据集1:A001,A003

道路交通事故类别:来自数据集2:B569,B555

这两者的原因必须包含在道路交通事故类别中。

每个数据集(未合并)必须包含在每个类别中,例如:道路交通事故:A001,A003,B569,B555

这是因为例如A001。在数据集1中A001用于车祸,但在数据集2中A001表示心脏病发作,我不希望在道路交通事故类别中进行心脏病发作。但当类别来自两个数据集(即道路交通事故:A001,A003,B569,B555)时,两个数据集中的A001都包含在道路交通事故类别中。

这个问题的目的是看看多年来不同类别在死亡方面的差异 - 我不允许手动合并两个数据集而不是Python。我也不被允许使用任何常见的软件包,如Pandas,Numpy等。

感谢先进的帮助

1 个答案:

答案 0 :(得分:0)

所以我对你的问题的理解是(如果我错了,请纠正我),你有两个数据集都有一个"原因"列/变量。但是这个"原因"的编码两个数据集中的列是不同的。

在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']

我希望我能正确理解你的问题,希望这个解决方案能解决你的问题。