根据大型数据集的子字符串的出现来修改文本数据列的有效方法?

时间:2019-05-18 03:46:03

标签: python pandas numpy machine-learning

我想修改数据集中的一列,其中包含以逗号分隔的一组人的性别列表。因此,条目可以是“男性,男性”或“女性,女性,女性,男性”,也可以只是“女性”。我想处理数据,以便以后使用sci-kit-learn的目的是“所有男性”,“所有女性”,“多数男性”,“多数女性”。

但是,我是数据科学的新手,除了将每个字符串分成“ male”和“ female”子字符串,计算出现次数,然后根据结果。我的数据集大约有60万个样本,因此蛮力似乎不是一个好主意。是否有使用Python和Numpy和/或Pandas的更好方法?

1 个答案:

答案 0 :(得分:1)

如果我对您的理解正确-您正在尝试通过“性别”列创建一个新的分类功能。

该列可能包含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"

您现在将此功能应用于“性别”列上的数据框。

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

P.S:关于速度的关注。你应该没事的。熊猫可以非常有效地处理60万行的字符串操作。但是,您可以使用dask对上述套用操作进行多处理。尽管对于这种情况来说这是一个过大的杀伤力。