大规模数据集中基于子字符串出现次数修改文本数据列的高效方法?

2024-05-29 04:06:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想修改数据集中的一列,其中包含一组人的性别的逗号分隔列表。所以条目可以是“男,男”或者“女,女,女,男”或者只是“女”。我想对数据进行处理,使分类为“全男性”、“全女性”、“多数男性”、“多数女性”,以便稍后与sci工具包一起使用。你知道吗

但是,我对数据科学还很陌生,除了将每个字符串拆分为“male”和“female”子字符串,计算出现次数,然后根据结果更新条目之外,我想不出其他方法来实现这一点。我的数据集有大约60万个样本,所以暴力似乎不是一个好主意。使用Python、Numpy和/或Pandas有更好的方法吗?你知道吗


Tags: 数据方法字符串列表工具包分类条目科学
1条回答
网友
1楼 · 发布于 2024-05-29 04:06:37

如果我理解正确的话,你是在尝试从你的专栏“性别”中创建一个新的分类特征。你知道吗

该列可能包含4个值-全部为男性、全部为女性、大部分为男性和大部分为女性。 (我假设大多数男性意味着男性的数量,而不是女性的数量)

def categorical_gender(genders):
    genders_split = genders.split(",")
    male_count = genders_split.count("male")
    female_count = genders_split.count("female")
    if male_count == len(genders_split):
        return "all male"
    if female_count == len(genders_split):
        return "all female"
    if male_count>female_count:
        return "majority male"
    if male_count<female_count:
        return "majority female"
    else:
        return "equal males and females"

现在,您可以将此函数应用于genders列上的数据帧。你知道吗

df["categorical_gender"] = df.genders.apply(categorical_gender)

附言:关于速度的问题。你应该没事的。Pandas可以非常有效地处理6000k行的字符串操作。但是,您可以使用dask来多处理上述apply操作。尽管这对这个案子来说是一种过度杀伤力。你知道吗

相关问题 更多 >

    热门问题