什么是Faker

Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。

项目地址: https://github.com/joke2k/faker 项目案例:[[Python脚本使用Faker构造一个1万行的csv客户表]]

Faker使用

官方文档:Faker 8.1.1 documentation

引用包、初始化、调用

from faker import Faker
 f=Faker(locale=‘zh_CN’) # 使用了简体中文文化
 f.name() #生成一个随机姓名
 f.address() #生成一个随机地址

地理信息类

city_suffix() :市,县
country() :国家
country_code() :国家编码
district() :区
geo_coordinate() :地理坐标
latitude() :地理坐标(纬度)
longitude() :地理坐标(经度)
postcode() :邮编
province() :省份 (zh_TW没有此方法)
address() :详细地址
street_address() :街道地址
street_name() :街道名
street_suffix() :街、路

基础信息类

ssn() :生成身份证号
bs() :随机公司服务名
company() :随机公司名(长)
company_prefix() :随机公司名(短)
company_suffix() :公司性质
credit_card_expire() :随机信用卡到期日
credit_card_full() :生成完整信用卡信息
credit_card_number() :信用卡号
credit_card_provider() :信用卡类型
credit_card_security_code() :信用卡安全码
job() :随机职位
first_name()
first_name_female() :女性名
first_name_male() :男性名
first_romanized_name() :罗马名
last_name()
last_name_female() :女姓
last_name_male() :男姓
last_romanized_name()
name() :随机生成全名
name_female() :男性全名
name_male() :女性全名
romanized_name() :罗马名
msisdn() :移动台国际用户识别码,即移动用户的ISDN号码
phone_number() :随机生成手机号
phonenumber_prefix() :随机生成手机号段

邮箱类

ascii_company_email() :随机ASCII公司邮箱名
ascii_email() :随机ASCII邮箱
ascii_free_email() :随机ASCII免费邮箱
ascii_safe_email() :随机ASCII安全邮箱
company_email() :公司邮箱
email() :邮箱
free_email() :免费邮箱
safe_email() :安全邮箱

网络信息类

domain_name() :生成域名
domain_word() :域词(即,不包含后缀)
ipv4() :随机IP4地址
ipv6() :随机IP6地址
mac_address() :随机MAC地址
tld() :网址域名后缀(.com,.net.cn,等等,不包括.)
uri() :随机URI地址
uri_extension() :网址文件后缀
uri_page() :网址文件(不包含后缀)
uri_path() :网址文件路径(不包含文件名)
url() :随机URL地址
user_name() :随机用户名
image_url() :随机URL地址

文件信息类

file_extension() :随机文件扩展名
file_name() :随机文件名(包含扩展名,不包含路径)
file_path() :随机文件路径(包含文件名,扩展名)
mime_type() :随机mime Type

数字类

numerify() :三位随机数字
random_digit() :0~9随机数
random_digit_not_null() :1~9的随机数或’’空字符
random_int() :随机数字,默认0~9999,可以通过设置min,max来设置
random_number() :随机数字,参数digits设置生成数字的最大位数
pyfloat() left_digits=5 #生成的整数位数,
right_digits=2 #生成的小数位数,
positive=True #是否只有正数
pyint() :随机Int数字(参考random_int()参数)
pydecimal() :随机Decimal数字(参考pyfloat参数)

文本、加密类

pystr() :随机字符串
random_element() :随机字母
random_letter() :随机字母
paragraph() :随机生成一个段落
paragraphs() :随机生成多个段落,通过参数nb来控制段落数,返回数组
sentence() :随机生成一句话
sentences() :随机生成多句话,与段落类似
text() :随机生成一篇文章(不要幻想着人工智能了,至今没完全看懂一句话是什么意思)
word() :随机生成词语
words() :随机生成多个词语,用法与段落,句子,类似
binary() :随机生成二进制编码
boolean() :True/False
language_code() :随机生成两位语言编码
locale() :随机生成语言/国际 信息
md5() :随机生成MD5
null_boolean() :NULL/True/False
password() :随机生成密码,可选参数:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母
sha1() :随机SHA1
sha256() :随机SHA256
uuid4() :随机UUID

时间信息类*

am_pm() :AM/PM
century() :随机世纪
date() :随机日期
date(pattern=‘%Y-%m-%d’)
date_between() :随机生成指定范围内日期,
参数:start_date,end_date取值
具体日期或者today,-30d,-30y类似
date_between_dates() :随机生成指定范围内日期,用法同上
date_object() :随机生产从1970-1-1到指定日期的随机日期。
date_this_month()
date_this_year()
date_time() :随机生成指定时间(1970年1月1日至今)
date_time_ad() :生成公元1年到现在的随机时间
date_time_between() :用法同dates
future_date() :未来日期
future_datetime() :未来时间
month() :随机月份
month_name() :随机月份(英文)
past_date() :随机生成已经过去的日期
past_datetime() :随机生成已经过去的时间
time() :随机24小时时间
time(pattern=‘%H:%M:%S’)
timedelta() :随机获取时间差
time_object() :随机24小时时间,time对象
time_series() :随机TimeSeries对象
timezone() :随机时区
unix_time() :随机Unix时间
year() :随机年份

4.7、集合信息类

profile() :随机生成档案信息
simple_profile() :随机生成简单档案信息

[image:08A9490C-504F-4E67-A019-AEF85DDF00B6-33698-0000A1BC01663D3E/9549502-5578b6eff6cf85e3.png]

档案信息和简档信息

随机集合类型

pyiterable()
pylist()
pyset()
pystruct()
pytuple()
pydict()

其他类别

currency_code() :货币编码
color_name() :随机颜色名
hex_color() :随机HEX颜色
rgb_color() :随机RGB颜色
safe_color_name() :随机安全色名
safe_hex_color() :随机安全HEX颜色
isbn10() :随机ISBN(10位)
isbn13() :随机ISBN(13位)
lexify() :替换所有问号(“?”)带有随机字母的事件。

Python脚本使用Faker构造一个1万行的csv客户表

#案例 #编程语言/python

更多命令参考[[Python Faker 造数据包]]

import csv

from faker import Faker

import datetime

fake = Faker(['zh_CN'])
# 创建文件,分别是文件名、w打开方式(w代表新建,如果已存在,就删除重写)、newline(如果不加,每行数据就会多一空白行)

file = open("/Users/zhuqinjie/Desktop/test_data.csv", "w", newline="")
# 获取写文件的对象
fwrite = csv.writer(file)

# 写入标题头
fwrite.writerow(["名字", "电话", "身份证", "公司", "地址", "信用卡", "职位", "邮箱"])

# 写入一行一行的数据
for i in range(9999):
    user_name = fake.name()
    phone = fake.phone_number()
    card_id = fake.ssn()
    company = fake.company()
    addr = fake.address()
    bank_card = fake.credit_card_number()
    title = fake.job()
    email = fake.email()
    fwrite.writerow([user_name, phone, card_id, company, addr,
                     bank_card, title, email])

file.close()