这篇文章的目的主要是讨论,所以即使是松散的想法或线索也将不胜感激。我正在尝试对一些数据进行分类以进行分析,并且想知道使用Pandas.cut
. 在某些情况下,我特别尝试将 ICD-9 诊断数据分类并使用此列表作为起点。从我正在阅读的内容来看,一种常见的方法是这样的:
break_points = [0, 139, 239, ...]
labels = ['infectious and parasitic diseases', 'neoplasms', 'endocrine diseases', ...]
df['diag_codes_binned'] = pd.cut(df['diag_codes'],
bins=break_points,
labels=labels)
我认识到这是一种完美的功能方式,但我不喜欢目视检查代码并确定哪些范围与哪些标签对齐是多么困难。我正在探索使用这样的字典:
diagnosis_code_dict = {139: 'infectious and parasitic diseases',
239: 'neoplasms',
279: 'endocrine diseases',
...}
但是 pd.cut 函数似乎与我的字典不太协调。似乎有一种方法可以使用数据框作为具有最小值和最大值的查找表,如图所示,这似乎是一种可能性(下面的示例):
In [187]: lkp
Out[187]:
Min Max Val
0 1 99 AAA
1 100 199 BBB
2 200 299 CCC
3 300 399 DDD
最后,我对我正在通过最佳处理方式工作的数据集还有一个考虑。一些诊断代码以 V 或 E 开头,目前我正计划对它们进行预处理以将它们转换为范围的扩展并以这种方式处理它们。例如,如果可能的非 E/V 代码的范围是range(0,1000)
,那么我可以将 E 转换为 arange(1000, 2000)
并将 V 转换为 a range(2000, 3000)
,这样我就可以为所有代码维护一个查找表或字典,我可以从中切入许多 bin我想了。也就是说,这种方法会导致无法一目了然地理解这些代码,所以如果有更好的方法来处理这个问题,我愿意接受建议。