python-3.x - 使用Python Faker生成5000行的不同数据

标签 python-3.x pandas dataframe random faker

我想使用Python Faker库生成500行数据,但是我使用下面提供的代码重复获取数据。您能指出我要去哪里了吗?我相信这与for循环有关。提前致谢:

from faker import Factory
import pandas as pd
import random

def create_fake_stuff(fake):


df = pd.DataFrame(columns=('name'
    , 'email'
    , 'bs'
    , 'address'
    , 'city'
    , 'state'
    , 'date_time'
    , 'paragraph'
    , 'Conrad'
    ,'randomdata'))

stuff = [fake.name()
    , fake.email()
    , fake.bs()
    , fake.address()
    , fake.city()
    , fake.state()
    , fake.date_time()
    , fake.paragraph()
    , fake.catch_phrase()
    , random.randint(1000,2000)]

for i in range(10):
        df.loc[i] = [item for item in stuff]
print(df)

if __name__ == '__main__':
    fake = Factory.create()
    create_fake_stuff(fake)

最佳答案

免责声明:此答案在问题后添加了很多,并添加了一些不直接回答问题的新信息。

现在有一个快速的新库Mimesis - Fake Data Generator

  • 优势:据说它的工作时间比faker快(请参阅下面我对有问题的数据的测试)。
  • 缺点:仅适用于3.6版本的Python。
  • pip install mimesis
    >>> from mimesis import Person
    >>> from mimesis.enums import Gender
    >>> person = Person('en')
    
    >>> person.full_name(gender=Gender.FEMALE)
    'Antonetta Garrison'
    >>> personru = Person('ru')
    >>> personru.full_name()
    'Рената Черкасова'
    

    与早期开发的faker相同:
    pip install faker
    >>> from faker import Faker
    >>> fake_ru=Faker('ja_JP')
    >>> fake_ru=Faker('ru_RU')
    >>> fake_jp=Faker('ja_JP')
    >>> print (fake_ru.name())
    Субботина Елена Наумовна
    >>> print (fake_jp.name())
    大垣 花子
    

    在其下面,基于forzer0eight的答复中提供的代码,我最近对Mimesis vs. Faker的计时:
    from faker import Faker
    import pandas as pd
    import random
    fake = Faker()
    def create_rows_faker(num=1):
        output = [{"name":fake.name(),
                       "address":fake.address(),
                       "name":fake.name(),
                       "email":fake.email(),
                       #"bs":fake.bs(),
                       "city":fake.city(),
                       "state":fake.state(),
                       "date_time":fake.date_time(),
                       #"paragraph":fake.paragraph(),
                       #"Conrad":fake.catch_phrase(),
                       "randomdata":random.randint(1000,2000)} for x in range(num)]
        return output
    
    %%time
    df_faker = pd.DataFrame(create_rows_faker(5000))
    

    CPU时间:用户3.51 s,系统:2.86 ms,总计:3.51 s
    壁挂时间:3.51 s
    from mimesis import Person
    from mimesis import Address
    from mimesis.enums import Gender
    from mimesis import Datetime
    person = Person('en')
    import pandas as pd
    import random
    person = Person()
    addess = Address()
    datetime = Datetime()
    def create_rows_mimesis(num=1):
        output = [{"name":person.full_name(gender=Gender.FEMALE),
                       "address":addess.address(),
                       "name":person.name(),
                       "email":person.email(),
                       #"bs":person.bs(),
                       "city":addess.city(),
                       "state":addess.state(),
                       "date_time":datetime.datetime(),
                       #"paragraph":person.paragraph(),
                       #"Conrad":person.catch_phrase(),
                       "randomdata":random.randint(1000,2000)} for x in range(num)]
        return output
    
    %%time
    df_mimesis = pd.DataFrame(create_rows_mimesis(5000))
    

    CPU时间:用户178毫秒,系统时间:1.7毫秒,总计:180毫秒
    挂墙时间:179毫秒

    以下是用于比较的结果数据:
    df_faker.head(2)
    address city    date_time   email   name    randomdata  state
    0   3818 Goodwin Haven\nBrocktown, GA 06168 Valdezport  2004-10-18 20:35:52 joseph81@gomez-beltran.info Deborah Garcia  1218    Oklahoma
    1   2568 Gonzales Field\nRichardhaven, NC 79149 West Rachel 1985-02-03 00:33:00 lbeck@wang.com  Barbara Pineda  1536    Tennessee
    
    df_mimesis.head(2)
    address city    date_time   email   name    randomdata  state
    0   351 Nobles Viaduct  Cedar Falls 2013-08-22 08:20:25.288883  chemotherapeutics1964@gmail.com Ernest  1673    Georgia
    1   517 Williams Hill   Malden  2008-01-26 18:12:01.654995  biochemical1972@yandex.com  Jonathan    1845    North Dakota
    

    关于python-3.x - 使用Python Faker生成5000行的不同数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45574191/

    相关文章:

    python-3.x - 导入错误: No module named 'mstamp_stomp'

    python-3.x - Bytes-like object 或 Buffer 类型注解

    python - x 轴值的分组

    Python:如何过滤字典?

    python - “ float ”对象没有属性 'strip'

    python - 将每个键的值作为数组存储在字典中

    pandas.hashtable.PyObjectHashTable.get_item 中的 Python pandas groupby 键错误

    r - 按组添加缺少年份的行

    python - 将 DataFrame 列类型从字符串转换为日期时间

    python - 我需要使用 sum() 用 for 循环填充数据帧