什么是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()