Python造假数据,用这个库
Faker扩展库
https://mp.weixin.qq.com/s/Y7kxqxme6M8VPbanWUfXnQ
这时,Python扩展库Faker来了,带着它那各种各样的数据来了。
先安装faker
pip install Faker
创建faker对象
from faker import Faker fake = Faker()
随机生成一个名字
fake.name() # 'Nancy Horton'
上边生成的名字是英文的,想要个中文名字怎么办?
很简单,在创建Faker对象的时候,指定语言“中文”就可以。
fake = Faker("zh_CN")
一些常用的语言包括以下等等:
- 简体中文:zh_CN
- 繁体中文:zh_TW
- 美国英文:en_US
- 英国英文:en_GB
- 德文:de_DE
- 日文:ja_JP
- 韩文:ko_KR
- 法文:fr_FR
都有什么样的数据
用faker可以生成哪些数据呢?
faker 提供了一些Standard Providers,列出了一些较为较为常用的数据。
- address
- company
- date_time
- job
- person
- phone_number
- profile
- python
- user_agent
比如生成“地址”信息
In [1]: fake.address()
Out[1]: '北京市大冶市海陵赵路x座 941837'
这里给出的是一整条“地址”的信息,你也可以通过building_number()、city()、street_address()等获取单个信息
这些字段其实记不住也没什么,需要用哪个的时候查阅官方文档就行。
文档链接
https://faker.readthedocs.io/en/master/providers.html
再比如生成“职位”信息
In [2]: fake.job()
Out[2]: '电气/电器工程师'
生成python的数据类型
# 生成一个字典 In [3]: fake.pydict() Out[3]: {'生产': 'OlmMWPfQMJYxeiJtZSFC', '有些': 'jUYzbWgDEqvzjiAsubSX', '资源': 7670, '应用': 804210265906561.0, '国际': 9113, '电影': 'https://yangtang.cn/homepage.jsp', '方面': 'RGfbqIgxqTbnjkGDpoVO', '为什': 1947, '地址': 7021, '时候': 'oxia@hotmail.com'}
生成user_agent
In [4]: fake.chrome()
Out[4]: 'Mozilla/5.0 (iPad; CPU iPad OS 4_2_1 like Mac OS X) AppleWebKit/531.2 (KHTML, like Gecko) CriOS/55.0.807.0 Mobile/62B715 Safari/531.2'
生成个人信息
In [5]: fake.profile() Out[5]: {'job': '仓库管理员', 'company': '太极传媒有限公司', 'ssn': '370302198911123749', 'residence': '云南省桂英市沈北新王路k座 204494', 'current_location': (Decimal('32.942144'), Decimal('95.019663')), 'blood_group': 'O-', 'website': ['https://www.minyan.cn/'], 'username': 'yangwen', 'name': '蒋璐', 'sex': 'M', 'address': '宁夏回族自治区宁德县丰都长沙街a座 685268', 'mail': 'oliao@yahoo.com', 'birthdate': datetime.date(1971, 2, 13)}
如果想生成多条个人信息,可以利用for循环,把每个字典在添加到列表里,导出一个DataFrame
基本用法
from faker import Faker # 1 fake = Faker() # 2 fake.name() # 3 # Donna Kelly fake.address() # 4 # 519 Donna River # Port Natalie, SD 87384
1. 从faker模块导入Faker这个类。
2. 实例化,保存到变量fake中。
3. 调用name()方法随机生成一个名字。
4. 调用address()方法随机生成地址信息。
如果要生成中文的随机数据,我们可以在实例化时给locale参数传入‘zh_CN’这个值:
from faker import Faker fake = Faker(locale='zh_CN') fake.name() # 庞超 fake.address() # 河北省辛集县合川张街p座 489476
如果要生成中文繁体字,则可以传入中国台湾这个地区的值'zh_TW'(当然地址显示的是台湾的):
from faker import Faker fake = Faker(locale='zh_TW') fake.name() # 羅婉婷 fake.address() # 16934 大里縣水源巷35號之0
地址相关
fake.address() # 地址 # '香港特别行政区大冶县上街钟街k座 664713' fake.building_number() # 楼名 # 'v座' fake.city() # 完整城市名 # '长春县' fake.city_name() # 城市名字(不带市县) # '梧州' fake.city_suffix() # 城市后缀名 # '市' fake.country() # 国家名称 # '厄立特里亚' fake.country_code(representation="alpha-2") # 'BZ' # 国家编号 fake.district() # 地区 # '沙湾' fake.postcode() # 邮编 # '332991' fake.province() # 省 # '河北省' fake.street_address() # 街道地址 # '武汉街D座' fake.street_name() # 街道名称 # '广州路' fake.street_suffix() # 街道后缀名 # '路'
汽车相关
fake.license_plate() # 牌照
# 'ZCO 000'
银行相关
fake.bank_country() # 银行所属国家 # 'GB' fake.bban() # 基本银行账号 # 'TPET9323218579379' fake.iban() # 国际银行代码 # 'GB82IRVM1531009974701'
条形码相关
fake.ean(length=13) # EAN条形码 # '5456457843465' fake.ean13() # EAN13条形码 # '2689789887590' fake.ean8() # EAN8条形码 # '52227936'
颜色相关
fake.color_name() # 颜色名称 # 'Orange' fake.hex_color() # 颜色十六进制值 # '#a5cb7c' fake.rgb_color() # 颜色RGB值 # '15,245,42' fake.rgb_css_color() # CSS颜色值 # 'rgb(15,70,13)' fake.safe_color_name() # 安全色 # 'aqua' fake.safe_hex_color() # 安全色十六进制值 # '#881100'
公司相关
fake.bs() # 商业用词 # 'synthesize strategic vortals' fake.catch_phrase() # 妙句(口号) # 'Robust even-keeled service-desk' fake.company() # 公司名称 # '富罳科技有限公司' fake.company_prefix() # 公司名称前缀 # '商软冠联' fake.company_suffix() # 公司名称后缀 # '网络有限公司'
信用卡相关
fake.credit_card_expire(start="now", end="+10y", date_format="%m/%y") # 过期年月 # '11/20' fake.credit_card_full(card_type=None) # 完整信用卡信息 # 'VISA 16 digit\n秀珍 卢\n4653084445257690 11/19\nCVC: 935\n' fake.credit_card_number(card_type=None) # 信用卡卡号 # '4339481813664365360' fake.credit_card_provider(card_type=None) # 信用卡提供商 # 'VISA 19 digit' fake.credit_card_security_code(card_type=None) # 信用卡安全码 # '597'
货币相关
fake.cryptocurrency() # 加密货币代码+名称 # ('TRX', 'TRON') fake.cryptocurrency_code() # 加密货币代码 # 'MZC' fake.cryptocurrency_name() # 加密货币名称 # 'Ripple' fake.currency() # 货币代码+名称 # ('GNF', 'Guinean franc') fake.currency_code() # 货币代码 # 'SOS' fake.currency_name() # 货币名称 # 'Lebanese pound'
时间相关
fake.am_pm() # AM或PM # 'PM' fake.century() # 世纪 # 'XII' fake.date(pattern="%Y-%m-%d", end_datetime=None) # 日期字符串(可设置格式和最大日期) # '1998-05-13' fake.date_between(start_date="-30y", end_date="today") # 日期(可设置限定范围) # datetime.date(2014, 8, 17) fake.date_between_dates(date_start=None, date_end=None) # 同上 # datetime.date(2019, 10, 14) fake.date_object(end_datetime=None) # 日期(可设置最大日期) # datetime.date(1981, 12, 20) fake.date_of_birth(tzinfo=None, minimum_age=0, maximum_age=115) # 出生日期 # datetime.date(1931, 12, 8) fake.date_this_century(before_today=True, after_today=False) # 本世纪日期 # datetime.date(2003, 5, 4) fake.date_this_decade(before_today=True, after_today=False) # 本年代中的日期 # datetime.date(2014, 1, 29) fake.date_this_month(before_today=True, after_today=False) # 本月中的日期 # datetime.date(2019, 10, 10) fake.date_this_year(before_today=True, after_today=False) # 本年中的日期 # datetime.date(2019, 3, 6) fake.date_time(tzinfo=None, end_datetime=None) # 日期和时间 # datetime.datetime(1990, 8, 11, 22, 25) fake.date_time_ad(tzinfo=None, end_datetime=None, start_datetime=None) # 日期和时间(从001年1月1日到现在) # datetime.datetime(244, 12, 17, 9, 59, 56) fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None) # 日期时间(可设置限定范围) # datetime.datetime(1995, 4, 19, 17, 23, 51) fake.date_time_between_dates(datetime_start=None, datetime_end=None, tzinfo=None) # 同上 # datetime.datetime(2019, 10, 14, 14, 15, 36) fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None) # 本世纪中的日期和时间 # datetime.datetime(2009, 8, 26, 18, 27, 9) fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None) # 本年代中的日期和时间 # datetime.datetime(2019, 2, 24, 22, 18, 44) fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None) # 本月中的日期和时间 # datetime.datetime(2019, 10, 3, 9, 20, 44) fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None) # 本年中的日期和时间 # datetime.datetime(2019, 2, 10, 7, 3, 18) fake.day_of_month() # 几号 # '23' fake.day_of_week() # 星期几 # 'Tuesday' fake.future_date(end_date="+30d", tzinfo=None) # 未来日期 # datetime.date(2019, 10, 28) fake.future_datetime(end_date="+30d", tzinfo=None) # 未来日期和时间 # datetime.datetime(2019, 10, 28, 21, 4, 35) fake.iso8601(tzinfo=None, end_datetime=None) # iso8601格式日期和时间 # '1995-04-10T00:45:01' fake.month() # 第几月 # '07' fake.month_name() # 月份名称 # 'December' fake.past_date(start_date="-30d", tzinfo=None) # 过去日期 # datetime.date(2019, 10, 3) fake.past_datetime(start_date="-30d", tzinfo=None) # 过去日期和时间 # datetime.datetime(2019, 9, 30, 20, 25, 43) fake.time(pattern="%H:%M:%S", end_datetime=None) # 时间(可设置格式和最大日期时间) # '14:26:44' fake.time_delta(end_datetime=None) # 时间间隔 # datetime.timedelta(0) fake.time_object(end_datetime=None) # 时间(可设置最大日期时间) # datetime.time(4, 41, 39) fake.time_series(start_date="-30d", end_date="now", precision=None, distrib=None, tzinfo=None) # <generator object Provider.time_series at 0x7fadf51e0930> fake.timezone() # 时区 # 'Asia/Baku' fake.unix_time(end_datetime=None, start_datetime=None) # UNIX时间戳 # 393980728 fake.year() # 某年 # '2016'
文件相关
fake.file_extension(category=None) # 文件扩展名 # 'avi' fake.file_name(category=None, extension=None) # 文件名 # '专业.pptx' fake.file_path(depth=1, category=None, extension=None) # 文件路径 # '/的话/以上.ods' fake.mime_type(category=None) # MIME类型 # 'application/xop+xml' fake.unix_device(prefix=None) # UNIX设备 # '/dev/xvdq' fake.unix_partition(prefix=None) # UNIX分区 # '/dev/xvdc6'
坐标相关
fake.coordinate(center=None, radius=0.001) # 坐标 # Decimal('147.543284') fake.latitude() # 纬度 # Decimal('66.519139') fake.latlng() # 经纬度 # (Decimal('55.3370965'), Decimal('-15.427896')) fake.local_latlng(country_code="US", coords_only=False) # 返回某个国家某地的经纬度 # ('25.67927', '-80.31727', 'Kendall', 'US', 'America/New_York') fake.location_on_land(coords_only=False) # 返回地球上某个位置的经纬度 # ('42.50729', '1.53414', 'les Escaldes', 'AD', 'Europe/Andorra') fake.longitude() # 经度 # Decimal('70.815233')
网络相关
fake.ascii_company_email(*args, **kwargs) # 企业邮箱(ascii编码) # 'qiuyan@xiulan.cn' fake.ascii_email(*args, **kwargs) # 企业邮箱+免费邮箱(ascii编码) # 'lei59@78.net' fake.ascii_free_email(*args, **kwargs) # 免费邮箱(ascii编码) # 'pcheng@gmail.com' fake.ascii_safe_email(*args, **kwargs) # 安全邮箱(ascii编码) # 'fangyan@example.org' fake.company_email(*args, **kwargs) # 企业邮箱 # 'scao@pingjing.net' fake.domain_name(levels=1) # 域名 # 'dy.cn' fake.domain_word(*args, **kwargs) # 二级域名 # 'gangxiuying' fake.email(*args, **kwargs) # 企业邮箱+免费邮箱 # 'na13@ding.cn' fake.free_email(*args, **kwargs) # 免费邮箱 # 'fang48@hotmail.com' fake.free_email_domain(*args, **kwargs) # 免费邮箱域名 # 'yahoo.com' fake.hostname(*args, **kwargs) # 主机名 # 'lt-70.53.cn' fake.image_url(width=None, height=None) # 图片URL # 'https://placekitten.com/752/243' fake.ipv4(network=False, address_class=None, private=None) # ipv4 # '160.152.149.78' fake.ipv4_network_class() # ipv4网络等级 # 'b' fake.ipv4_private(network=False, address_class=None) # 私有ipv4 # '10.99.124.57' fake.ipv4_public(network=False, address_class=None) # 公共ipv4 # '169.120.29.235' fake.ipv6(network=False) # ipv6 # 'f392:573f:d60f:9aed:2a4c:36d7:fe5b:7034' fake.mac_address() # MAC地址 # '62:67:79:8c:c2:40' fake.safe_email(*args, **kwargs) # 安全邮箱 # 'jing58@example.org' fake.slug(*args, **kwargs) # URL中的slug # '' fake.tld() # 顶级域名 # 'cn' fake.uri() # URI # 'http://yi.com/list/main/explore/register.php' fake.uri_extension() # URI扩展 # '.php' fake.uri_page() # URI页 # 'terms' fake.uri_path(deep=None) # URI路径 # 'blog/tags/blog' fake.url(schemes=None) # URL # 'http://liutao.cn/' fake.user_name(*args, **kwargs) # 用户名 # 'xiulan80'
职位相关
fake.job() # 职位
# '法务助理'
文本相关
fake.paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None) # 单个段落 # '最新事情生产.方面解决名称责任而且.类型其实内容发生电脑.音乐具有今年是一.' fake.paragraphs(nb=3, ext_word_list=None) # 多个段落 # ['使用评论管理.没有广告工作评论是否.', '帖子而且专业.这些比较完全发现准备设计工具.', '完成详细发生空间汽车.新闻电影您的游戏这种操作网站知道.'] fake.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None) # 单个句子 # '直接这样点击单位对于时候.' fake.sentences(nb=3, ext_word_list=None) # 多个句子 # ['电话国际项目管理.', '软件之后提高一样次数电影规定.', '东西会员发展什么不断经济.'] fake.text(max_nb_chars=200, ext_word_list=None) # 单个文本 # ('资源信息得到因此开发资源资料.\n' # '国家这样等级需要用户如此.电话非常一切游戏所以学校类型.不要正在如果来源认为投资在线.\n' # '这些更新密码其中起来实现有些.以上事情重要通过.\n' # '但是就是介绍最大深圳简介设计.历史这种可以出现中心社区.\n' # '政府当然包括简介全国内容生活.有些地址以上.回复这些来自搜索现在不断经营不断.\n' # '操作为什孩子报告东西拥有如此.相关特别业务日本这种.合作问题准备比较谢谢.') fake.texts(nb_texts=3, max_nb_chars=200, ext_word_list=None) # 多个文本 # [ '地址控制无法正在必须中心积分一些.支持制作安全.\n' # '比较最新最大她的功能能够是一.主题选择当前显示.\n' # '的话社会现在地区阅读继续所有.美国数据正在深圳不能.\n' # '能够查看其中生活商品.谢谢认为之后以及以下之后这里.\n' # '活动支持人民这么今年.要求包括生活运行技术社会.\n' # '当前更多游戏.下载一点开发论坛法律为了美国.\n' # '如何更新个人谢谢作为还有论坛.销售销售法律学生这么责任一些.', # '日本最大方法活动主题到了结果.教育还有孩子觉得简介出现国际.东西国家图片威望品牌.\n' # '那些会员现在准备可能.威望部分文件主题东西业务一切之间.所以必须当前方法.\n' # '等级大小重要可能下载孩子.来源感觉业务文件以后深圳学校.网络什么新闻都是安全.\n' # '资料重要成功谢谢时候音乐安全相关.电脑系列日期.工具使用搜索来源首页.\n' # '直接企业影响大小什么.相关品牌选择她的规定来源推荐.', # '中文文化数据内容系统.他们这些之间深圳.\n' # '联系城市出现部分都是政府生活.社会同时人民市场现在决定需要.其他政府简介深圳教育加入对于.\n' # '运行是一语言安全通过大小学生.商品然后信息由于虽然.\n' # '因为关于选择希望行业具有深圳.出现价格那么下载提高知道人员.设备直接显示事情帖子正在两个关于.\n' # '系列公司大家.论坛所以完全文章标准.活动中国工具电脑.\n' # '主题作者不能.进行国家系统地区增加.经验质量价格我的.'] fake.word(ext_word_list=None) # 单个词语 # '新闻' fake.words(nb=3, ext_word_list=None, unique=False) # 多个词语 # ['选择', '历史', '规定']
人物相关
fake.first_name() # 名字 # '强' fake.first_name_female() # 名字(女) # '桂荣' fake.first_name_male() # 名字(男) # '志强' fake.first_romanized_name() # 名字(罗马文) # 'Chao' fake.last_name() # 姓 # '宋' fake.last_name_female() # 姓(女) # '陆' fake.last_name_male() # 姓(男) # '曾' fake.last_romanized_name() # 姓(罗马文) # 'Xie' fake.name() # 姓名 # '王凯' fake.name_female() # 姓名(女) # '戴丽丽' fake.name_male() # 姓名(男) # '刘荣' fake.prefix() # 称谓 # '' fake.prefix_female() # 称谓(女) # '' fake.prefix_male() # 称谓(男) # '' fake.romanized_name() # 称谓(罗马文) # 'Guiying Chang' fake.suffix() # 姓名后缀(中文不适用) # '' fake.suffix_female() # '' fake.suffix_male() # ''
电话相关
fake.msisdn() # 完整手机号码(加了国家和国内区号) # '9067936325890' fake.phone_number() # 手机号 # '18520149907' fake.phonenumber_prefix() # 区号 # 145
https://zhuanlan.zhihu.com/p/87203290

浙公网安备 33010602011771号