• Python生成随机数插件Faker的用法
  • 发布于 2个月前
  • 501 热度
    0 评论

Faker插件是一个用于Python的生成随机数据的插件,可以用于测试、原型设计、数据清洗等多种应用场景。Faker插件可以生成各种类型的随机数据,包括但不限于数字、字符串、日期、时间等。Faker插件可以与Python的多种测试框架结合使用,如unittest、pytest等,可以方便地创建和管理随机数据。Faker插件支持自定义随机数据生成器,可以根据具体需求生成特定的随机数据。


这个在我们平时的程序测试当中还是非常好用的。它可以生成包括名字、邮件地址、电话号码、工作、句子、颜色,货币等等众多假数据,同时还支持本地化,也就是可以将当前工作语言环境作为参数,生成当前语言的假数据,实在是太贴心了


Faker插件的安装方法非常简单,只需要在终端或命令提示符中使用pip install faker命令即可。安装完成后,可以在Python代码中导入fakelib并使用其中的函数来生成随机数据。

以下是一个简单的例子:

from faker import Faker
fake = Faker()

print(
      'Fake color:', fake.color(), '\n'
      'Fake job:',   fake.job(),   '\n'
      'Fake email:', fake.email(), '\n'
      )
# 堆代码 duidaima.com
# Printing a list of fake Korean and Portuguese addresses
fake = Faker(['ko_KR', 'pt_BR'])
for _ in range(5):
    print(fake.unique.address())     # using the `.unique` property

print('\n')

# Assigning a seed number to print always the same value / data set
fake = Faker()
Faker.seed(3920)
print('This English fake name is always the same:', fake.name())
生成结果:
Fake color: #212591
Fake job: Occupational therapist
Fake email: nancymoody@hotmail.com

Estrada Lavínia da Luz, 62
Oeste
85775858 Moura / SE
Residencial de Moreira, 57
Morro Dos Macacos
75273529 Farias / TO
세종특별자치시 강남구 가락거리 (예원박김마을)
전라북도 광주시 백제고분길 (승민우리)
경상남도 당진시 가락53가

This English fake name is always the same: Kim Lopez
我们再回到我们的动物数据集,我们发现有两个动物的名字不是特别好
df_bad_names = df[df['animalname'].str.contains('Stink|Pooh')]
print(df_bad_names)
结果:

identichipnumber animalname            breedname speciesname sexname  \
1692              NaN    Stinker  Domestic Short Hair         Cat    Male
3336  981020023417175       Pooh  German Shepherd Dog         Dog  Female
3337  981020023417175       Pooh  German Shepherd Dog         Dog  Female

               returndate                     returnedreason
1692                  NaN                              Stray
3336  2018-05-14 00:00:00  Incompatible with owner lifestyle
3337                  NaN                              Stray
下面我们分别为这两只猫狗重新命名一个好听的名字
# Defining a function to rename the unlucky pets
def rename_pets(name):
    if name == 'Stinker':
        fake = Faker()
        Faker.seed(162)
        name = fake.name()
    if name == 'Pooh':
        fake = Faker(['de_DE'])
        Faker.seed(20387)
        name = fake.name()
    return name

# Renaming the pets
df['animalname'] = df['animalname'].apply(rename_pets)

# Checking the results
print(df.iloc[df_bad_names.index.tolist(), :] )
生成结果:
identichipnumber            animalname            breedname speciesname  \
1692              NaN         Steven Harris  Domestic Short Hair         Cat
3336  981020023417175  Helena Fliegner-Karz  German Shepherd Dog         Dog
3337  981020023417175  Helena Fliegner-Karz  German Shepherd Dog         Dog

     sexname           returndate                     returnedreason
1692    Male                  NaN                              Stray
3336  Female  2018-05-14 00:00:00  Incompatible with owner lifestyle
3337  Female                  NaN                              Stray
怎么样,名字是不是好听多了!


其它更多用法

1.生成随机整数:

from faker import Faker  
  
fake = Faker()  
print(fake.random_int(10)) # 输出一个10位随机整数,例如:1234567890
2.生成随机字符串:
from faker import Faker  
  
fake = Faker()  
print(fake.name()) # 输出一个随机的名字,例如:张三  
print(fake.email()) # 输出一个随机的邮箱地址,例如:zhangsan@duidaima.com  
print(fake.company()) # 输出一个随机的公司名称,例如:堆代码网
3.生成随机日期和时间:
from faker import Faker  
  
fake = Faker()  
print(fake.date()) # 输出一个随机的日期,例如:2023-05-17  
print(fake.datetime()) # 输出一个随机的日期时间,例如:2023-05-17 12:34:56
4.生成随机CSV文件:
from faker import Faker  
  
fake = Faker()  
with open('data.csv', 'w', newline='') as f:  
    f.write(fake.csv()) # 生成一个包含随机数据的CSV文件
5.自定义随机数据生成器:
from faker import Faker  
  
class CustomGenerator(Faker):  
    def phone_number(self):  
        return '138' + ''.join([str(random.randint(0, 9)) for _ in range(11)])  
  
fake = CustomGenerator()  
print(fake.phone_number()) # 输出一个随机的手机号码,例如:13812345678
以上仅是一些简单的用法示例,Faker插件还支持生成随机IPv4地址、随机MAC地址、随机JSON等更多功能。可以根据具体需求进行使用。


用户评论