在 Faker 库中链接名字和性别

Linking first name and gender in Faker library

我正在寻求使用 Faker 库为我的研究生成一个假数据集。我无法 link 对方的性别和名字。在这方面我能得到一些帮助吗?下面给出函数。

def faker_categorical(num=1, seed=None):
    np.random.seed(seed)
    fake.seed_instance(seed)
    
    output = [
        {
            "gender": np.random.choice(["M", "F"], p=[0.5, 0.5]),
            "GivenName": fake.first_name_male() if "gender"=="M" else fake.first_name_female(),
            "Surname": fake.last_name(),
            "Zipcode": fake.zipcode(),
            "Date of Birth": fake.date_of_birth(),
            "country": np.random.choice(["United Kingdom", "France", "Belgium"]),
        }
        for x in range(num)
    ]
    return output

df = pd.DataFrame(faker_categorical(num=1000))

你的问题不清楚,但我想你正在寻找的是一种从代码中的两个不同位置引用 np.random.choice() 结果的方法。简单——将它分配给一个临时变量,然后从两个地方引用该变量。

def faker_categorical(num=1, seed=None):
    np.random.seed(seed)
    fake.seed_instance(seed)
    
    output = []
    for x in range(num):
      gender = np.random.choice(["M", "F"], p=[0.5, 0.5])
      output.append(
        {
            "gender": gender,
            "GivenName": fake.first_name_male() if gender=="M" else fake.first_name_female(),
            "Surname": fake.last_name(),
            "Zipcode": fake.zipcode(),
            "Date of Birth": fake.date_of_birth(),
            "country": np.random.choice(["United Kingdom", "France", "Belgium"]),
        })
    return output

有一项关于将名字与性别联系起来的分类研究,例如约翰是 99.8% 的男性,而玛丽亚是 99.8% 的女性。您可以阅读它 here,也可以下载一个 .csv 文件,该文件将不同的名字映射到性别。当我需要关于人的虚假数据时,我所做的是解析数据集,如果值在那里,我会分配分类性别,如果不是(因为当地人或其他原因),我只是分配 np.random.choice(["MALE", "FEMALE"])。希望这对您有所帮助