Python使用Faker库生成伪数据
Faker可以生成各种各样的伪数据
#模块安装
- 安装Faker:
pip install -i https://mirrors.aliyun.com/pypi/simple/ Faker
引用
from fk import Faker
fk = Faker(locale="zh-CN")
使用
中文姓名类
- fk.name():姓名
- fk.last_name():姓
- fk.first_name():名
- fk.name_male():男性姓名
- fk.name_female():女性姓名
from faker import Faker
fk = Faker(locale="zh-CN")
print(fk.name()) # 随机生成一个姓名
地址类
- fk.country():国家
- fk.province():省份
- fk.city():城市
- fk.address():地址(带邮编)
- fk.street_address():街道
- fk.postcode():邮编
公司类
- fk.company():公司名
- fk.job ():工作职位
- fk.phone_number():手机号
- fk.ssn():身份证号
- fk.email():电子邮箱
中文字符类
- fk.text(max_nb_chars):随机中文文本(nb代表最大字符数)
- fk.sentence(nb):随机一句中文文本(nb代表词语数)
- fk.sentences(nb):随机生成多句话(nb代表词语数)
- fk.paragraph(nb):随机中文段落(nb代表句子数)
- fk.paragraphs(nb):随机生成多个段落(nb代表句子数)
- fk.word():随机1个中文词语
- fk.words(nb):随机生成多个词语(nb代表词语数量)
英文字符类
- fk.pystr():随机英文字符串,eg:jdZRgkOpaAAxJdjtDcXu
- fk.random_element():随机字母
- fk.random_letter():随机字母
- boolean():随机True/False
- password(length):随机生成密码
数字类
- fk.random_int(min=0, max=9999):随机范围内数字
- fk.random_element(elements):随机选取1个元素
- fk.pyfloat(left_digits,right_digits,positive):随机生成小数(整数位数,小数位数,是否只有正数)
print(fk.pyfloat(3,2,True)) # 805.98
print(fk.pyfloat(3,2,False)) # -935.49
- fk.rnumerify():随机三位数字
- fk.random_digit():0~9随机数
- fk.random_digit_not_null():1~9随机数
日期类
- fk.date():随机日期(eg:1997-11-13)
- fk.time():随机时间(eg:09:07:10)
- fk.date_time():随机日期+时间(eg:2002-03-11 20:38:45)
- fk.date_between(start_date,end_date):随机范围内日期
- fk.year():随机年份
- fk.month():随机月份
- fk.day_of_week():随机星期
start_date = datetime.date(2000, 6, 12)
end_date = datetime.date(2024, 11, 4)
print(fk.date_between(start_date,end_date))
应用
from faker import Faker
fk = Faker(locale="zh-CN")
students = [["序号", "姓名", "性别", "手机号码", "出生日期", "身份证号码", "电子邮箱", "家庭地址", "备注"]]
# 生成20条伪学生数据
for i in range(20):
students.append([
i + 1,
fk.name(),
fk.random_element(["男", "女"]),
fk.phone_number(),
str(fk.date_between(start_date="-20y", end_date="-15y")), # 前20年~15年
fk.ssn(min_age=15, max_age=20),
fk.email(),
fk.address(),
fk.text(max_nb_chars=20)
])
# 打印伪学生数据
for student in students:
print(student)