闽公网安备 35020302035485号
Faker插件是一个用于Python的生成随机数据的插件,可以用于测试、原型设计、数据清洗等多种应用场景。Faker插件可以生成各种类型的随机数据,包括但不限于数字、字符串、日期、时间等。Faker插件可以与Python的多种测试框架结合使用,如unittest、pytest等,可以方便地创建和管理随机数据。Faker插件支持自定义随机数据生成器,可以根据具体需求生成特定的随机数据。
这个在我们平时的程序测试当中还是非常好用的。它可以生成包括名字、邮件地址、电话号码、工作、句子、颜色,货币等等众多假数据,同时还支持本地化,也就是可以将当前工作语言环境作为参数,生成当前语言的假数据,实在是太贴心了
以下是一个简单的例子:
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位随机整数,例如:12345678902.生成随机字符串:
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:564.生成随机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等更多功能。可以根据具体需求进行使用。