标准化分类值

Posted

技术标签:

【中文标题】标准化分类值【英文标题】:standardize categorical value 【发布时间】:2021-04-04 16:55:39 【问题描述】:

现在我正在处理开放数据集,其中一项任务是“标准化”值。我们只关心“年龄”、“性别”、“种族”、“种族”和“国家”属性。

对于“国家”,我们可以将“美国”、“美国”、“美国”作为匹配“美国”的有效表达式。还有很多其他国家在不同的数据集中有不同的表达值。

目标是将所有这些值“转换”为例如“US”。但是,我不知道其他数据集中是否存在“US”的其他表达方式。所有数据集的存储容量为 2.3 TB。我无法迭代所有数据集以获取“US”的所有不同表达式,然后再次迭代以转换所有值。

有什么工具可以检测和转换这些东西吗?

现在一切都在 Python 之下。

最好的

最大

【问题讨论】:

嘿 Max,欢迎来到 SO,如果您向我们展示 Gender 上的数据看起来如何,效果会更好...请添加输入和预期输出。总而言之,也许您可​​以通过结合使用 lower 和 replace 等来解决您的问题。 @DaniMesejo 我编辑了我的表达,如果不够清楚,我可能会做一个图表来解释目的。我想要解决的只是替换,但问题是我没有每个值的所有唯一表达式,例如,我不知道“US”将如何在不同的数据集中表示,所以我可能会错过一些简单的值降低并更换。我很难判断这个值是否是 'US' 的有效表达式。 如果你只能迭代一次,那么你需要一个函数来判断一个名字是否等同于'US'。如果是,那么您可以即时更换它。 @IsmaelELATIFI 所以看来我必须至少迭代一次。感谢您的帮助。 【参考方案1】:

“标准化”值的唯一方法是知道要匹配和替换什么,这涉及“循环”数据以找出存在的值。一旦你有了这个列表,你就可以设计合适的匹配字符串来替换。

因此,在这里,我们可以“循环”通过数据框(即,使用为我们执行循环和计数的函数)并计算列中的值。一旦我们有了该计数表,我们就可以复制并粘贴哪些值似乎与我们的国家名称相匹配。您可以手动完成此部分,因为此时它比自动化更容易。此步骤的一个重要部分是将值小写(使用.str.lower()),以便您可以更好地比较和计算您的字符串。

>>> df = pd.DataFrame('Country': ['united-states', 'usa', 'USA', 'UNITED STATES',
                                   'united states', 'us', 'us', 'us'])
>>> df
         Country
0  united-states
1            usa
2            USA
3  UNITED STATES
4  united states
5             us
6             us
7             us
>>> df['Country'].value_counts()
us               3
united states    1
usa              1
united-states    1
UNITED STATES    1
USA              1
Name: Country, dtype: int64
>>> # Take a look at values above to generate replace list
>>> df['Country'].str.lower().replace(['united-states', 'usa', 'united states'], 'us')
0    us
1    us
2    us
3    us
4    us
5    us
6    us
7    us
Name: Country, dtype: object

在此处阅读更多信息https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.replace.html

上述解决方案仅适用于Country 列,但对于您数据的任何其他列都可能无效。这很乏味,但是这种数据整理必须手动完成,否则,您可能会丢失应该标准化的数据。而且,如果您最初未能抓住其中一些价值,则需要投入更多时间来修复那些缺失的价值。

如果您的数据碰巧定期发生变化,情况就会发生变化。在这种情况下,上述将是一个很好的第一种方法。但是您应该能够将fuzzy matching 之类的技术与fuzzywuzzy 之类的Python 包一起使用。这将允许您找出哪些字符串更相似,然后以这种方式解析它。但是,这需要更详细的工作。

【讨论】:

以上是关于标准化分类值的主要内容,如果未能解决你的问题,请参考以下文章

Python计算医疗数据训练集测试集的对应的临床特征:训练集(测试集)的阴性和阳性的样本个数连续变量的均值(标准差)以及训练测试集阳性阴性的p值离散变量的分类统计比率训练测试集阳性阴性的p值

ECMAscript数据类型的标准定义

机器学习中---分类模型--决策树模型

H2O 不应该标准化正则化 GLM 模型(套索、岭、弹性网)的分类预测变量吗?

js002---- 标准内置对象

ACMG遗传变异分类标准与指南