[编程基础] Python数据生成库Faker总结
Python Faker教程展示了如何使用Faker软件包在Python中生成伪数据。我们使用joke2k/faker包。
1 介绍
Faker是一个生成假数据的Python库。伪数据通常用于测试或用一些伪数据填充数据库。Python Faker很大程度上受到了PHP的Faker、Perl的Data::Faker和Ruby的Faker的启发。该软件包与composer一起安装。另外,我们安装了Dumper,它在转储变量时提供更好的控制台输出。
官方项目地址见:
https://github.com/joke2k/faker
官方文档地址见:
https://faker.readthedocs.io/en/master/index.html
# pip install Faker
# pip install Dumper
通过faker.Faker()创建并初始化faker数据生成器,该生成器可以通过访问以数据类型命名的属性来生成数据。
Faker将数据生成委托给提供者。默认提供程序使用英语区域设置。Faker支持其他地区语言(包括中文);它们的完成程度不同。支持的语言列表见:
https://faker.readthedocs.io/en/master/locales.html
1.1 简单的使用
下面示例输出假名称,地址和文本。
from faker import Faker
faker = Faker()
print(f'name: {faker.name()}')
print(f'address: {faker.address()}')
print(f'text: {faker.text()}')
name: Sara Hood
address: 5550 Soto Extension
Katherinetown, HI 43412
text: Personal onto section structure. Song thing prove blue answer ok left sure.
Talk situation ahead soon parent score.
She break rather couple enjoy to. Relate prove possible wrong.
当然可以在创建Faker生成器时通过语言代号指定语言,如下所示。常用支持的语言代号见:
https://faker.readthedocs.io/en/master/locales.html
from faker import Faker
# 默认是en_US
faker = Faker('zh_CN')
print(f'name: {faker.name()}')
print(f'address: {faker.address()}')
print(f'text: {faker.text()}')
name: 萧坤
address: 新疆维吾尔自治区阳县锡山杭州街Y座 851331
text: 当然看到帮助汽车的话在线.位置但是不是.欢迎不是所以通过计划为了.
提高特别手机.中心一直我们.
正在经营手机以后一样情况.特别网上这里介绍.
到了科技阅读.当前经营主要.注册投资时候.
影响这种公司软件社区记者大小资料.支持那些一种客户有限人民日期今天.建设历史计划公司活动那么所以.
认为文章新闻一般中文帖子.文章主要那个发展增加所有.
经验发布广告比较历史应该.单位需要系统他们.
1.2 Faking names
在下面示例中,我们伪造与用户名有关的数据。
from faker import Faker
faker = Faker('zh_CN')
# 名字
print(f'Name: {faker.name()}')
# 名
print(f'First name: {faker.first_name()}')
# 姓
print(f'Last name: {faker.last_name()}')
print('--------------------------')
# 男人名
print(f'Male name: {faker.name_male()}')
# 女人名
print(f'Female name: {faker.name_female()}')
Name: 马淑英
First name: 玉英
Last name: 罗
--------------------------
Male name: 黄小红
Female name: 黄建华
1.3 Faking jobs
使用job()接口生成假的工作。使用如下:
from faker import Faker
faker = Faker('zh_CN')
for _ in range(6):
print(faker.job())
网站编辑
呼叫中心客服
招聘专员/助理
测试员
畜牧师
水工
1.4 Faking currencies
下面的示例为货币创建假数据
from faker import Faker
faker = Faker('zh_CN')
# 仅支持英文输出
# 生成货币
print(f'currency: {faker.currency()}')
# 货币名
print(f'currency name: {faker.currency_name()}')
# 货币代号
print(f'currency code: {faker.currency_code()}')
currency: ('FJD', 'Fijian dollar')
currency name: Tanzanian shilling
currency code: PYG
1.5 Faking words
下面的示例为单词创建假数据
from faker import Faker
faker = Faker('zh_CN')
# 创建一个单词
print(f'a word: {faker.word()}')
# 创建六个单词
print(f'six words: {faker.words(6)}')
words = ['春天','夏天','秋天','冬天','白天','黑天']
# 从预定义的单词列表中创建假单词
print(f'customized unique words: {faker.words(2, words, True)}')
a word: 而且
six words: ['如何', '如果', '自己', '单位', '同时', '来自']
customized unique words: ['春天', '冬天']
1.6 Faking profiles
Faker可以使用simple_profile()创建简单的虚拟配置文件,使用profile()创建扩展配置文件。通过profile可以生成信息概要文件,该示例为男性和女性创建虚拟概要文件。
from faker import Faker
import dumper
faker = Faker('zh_CN')
profile1 = faker.simple_profile()
dumper.dump(profile1)
print('--------------------------')
profile2 = faker.simple_profile('M')
dumper.dump(profile2)
print('--------------------------')
profile3 = faker.profile(sex='F')
dumper.dump(profile3)
<dict at 0x7f4ebfa51730>:
username: 'napeng'
name: '林冬梅'
sex: 'M'
address: '甘肃省荆门县白云李街w座 407872'
mail: 'rbai@yahoo.com'
birthdate: <str at 0x7f4ebf6ec530>: 'datetime.date(1908, 11, 20)'
--------------------------
<dict at 0x7f4ebefbe6e0>:
username: 'zhaojing'
name: '郑璐'
sex: 'M'
address: '广西壮族自治区桂英县魏都武汉路o座 706400'
mail: 'fanwei@yahoo.com'
birthdate: <str at 0x7f4ebeea08f0>: 'datetime.date(1953, 9, 22)'
--------------------------
<dict at 0x7f4ebf5aa8c0>:
job: '股票/期货操盘手'
company: '合联电子科技有限公司'
ssn: '211403193711125294'
residence: '山东省利县清河舒路N座 674496'
current_location: <tuple at 0x7f4ebf705460>
0: <str at 0x7f4ebeea0df0>: "Decimal('23.160202')"
1: <str at 0x7f4ebeea0df0>: "Decimal('-132.788799')"
blood_group: 'A+'
website: ['https://www.wp.cn/', 'https://www.pingshao.cn/']
username: 'kdai'
name: '王玲'
sex: 'F'
address: '西藏自治区磊县白云济南街h座 652495'
mail: 'fang20@hotmail.com'
birthdate: <str at 0x7f4ebeea08f0>: 'datetime.date(1985, 10, 18)'
1.7 Faking numbers
Faker允许生成随机数字和整数。
from faker import Faker
faker = Faker('zh_CN')
# 随机数
print(f'Random int: {faker.random_int()}')
# random_int()中指定生成0到100数字
print(f'Random int: {faker.random_int(0, 100)}')
# 生成数字0到9
print(f'Random digit: {faker.random_digit()}')
Random int: 837
Random int: 72
Random digit: 1
1.8 Faking hashes and uuids
hashes和uuids的伪造支持。下面示例生成三个伪哈希和一个uuid值
from faker import Faker
faker = Faker('zh_CN')
print(f'md5: {faker.md5()}')
print(f'sha1: {faker.sha1()}')
print(f'sha256: {faker.sha256()}')
print(f'uuid4: {faker.uuid4()}')
md5: 01c570bf837bd5dd4a0d1f21d2d1005f
sha1: 005a8185c78d72bfb6174f672ebcc65e92b3a2c8
sha256: 0157d784e175bbcacef6334b4b840634b1af721212a9a582681dcd0a65435d6d
uuid4: 013bd385-9d37-4ecb-bd33-2afafb8b1350
1.9 Faking internet related data
Faker有多个用于伪造Internet相关数据的访问器。下面示例显示了各种与Internet相关的数据,包括电子邮件,域名,段,IP地址和URL。其中一些数据是真实存在的,只是伪造随机选择了互联网的数据,如url可以直接打开。
from faker import Faker
faker = Faker('zh_CN')
print(f'Email: {faker.email()}')
print(f'Safe email: {faker.safe_email()}')
print(f'Free email: {faker.free_email()}')
print(f'Company email: {faker.company_email()}')
print('------------------------------------')
print(f'Host name: {faker.hostname()}')
print(f'Domain name: {faker.domain_name()}')
print(f'Domain word: {faker.domain_word()}')
print(f'TLD: {faker.tld()}')
print('------------------------------------')
print(f'IPv4: {faker.ipv4()}')
print(f'IPv6: {faker.ipv6()}')
print(f'MAC address: {faker.mac_address()}')
print('------------------------------------')
print(f'Slug: {faker.slug()}')
print(f'Image URL: {faker.image_url()}')
Email: juan03@yahoo.com
Safe email: dingxiuying@example.com
Free email: xiulanfeng@hotmail.com
Company email: tao55@yangxiuying.cn
------------------------------------
Host name: srv-22.yanping.cn
Domain name: zou.cn
Domain word: 96
TLD: cn
------------------------------------
IPv4: 219.38.223.8
IPv6: 247e:c6c6:eaaa:2466:b17f:ab9b:cb64:3d86
MAC address: f4:89:6f:d4:6c:69
------------------------------------
Slug:
Image URL: https://placeimg.com/654/868/any
1.10 Faking date and time
Faker有很多伪造日期和时间值的方法。
下面示例显示了伪造的生日,日期时间部分,时区和AM / PM方法
from faker import Faker
faker = Faker('zh_CN')
# 生日
print(f'Date of birth: {faker.date_of_birth()}')
# 世纪
print(f'Century: {faker.century()}')
# 年
print(f'Year: {faker.year()}')
# 月
print(f'Month: {faker.month()}')
# 英文月名
print(f'Month name: {faker.month_name()}')
# 星期名
print(f'Day of week: {faker.day_of_week()}')
# 日号
print(f'Day of month: {faker.day_of_month()}')
# 时区
print(f'Time zone: {faker.timezone()}')
# 上午下午
print(f'AM/PM: {faker.am_pm()}')
Date of birth: 1962-01-19
Century: IX
Year: 1988
Month: 08
Month name: April
Day of week: Thursday
Day of month: 10
Time zone: Pacific/Galapagos
AM/PM: AM
第二个示例显示了在当前世纪,十年,年份或月份中生成日期时间值的方法。它还包括时间序列值的生成。
from faker import Faker
faker = Faker('zh_CN')
# 本世纪的日期时间
print(f'Datetime this century: {faker.date_time_this_century()}')
# 近十年的日期时间
print(f'Datetime this decade: {faker.date_time_this_decade()}')
# 今年的日期时间
print(f'Datetime this year: {faker.date_time_this_year()}')
# 本月的日期时间
print(f'Datetime this month: {faker.date_time_this_month()}')
print('-------------------------')
# # 本世纪的日期
print(f'Date this century: {faker.date_this_century()}')
# 近十年的日期
print(f'Date this decade: {faker.date_this_decade()}')
# 今年的日期
print(f'Date this year: {faker.date_this_year()}')
# 本月的日期
print(f'Date this month: {faker.date_this_month()}')
print('-------------------------')
# 时间间隔
TOTAL_SECONDS = 60*60*24*2 # two days
# 伪造到现在为止时间间隔为两天的序列
series = faker.time_series(start_date='-12d', end_date='now', precision=TOTAL_SECONDS)
for val in series:
print(val[0])
Datetime this century: 2013-01-08 02:27:47
Datetime this decade: 2020-03-01 18:24:33
Datetime this year: 2020-06-20 01:18:59
Datetime this month: 2020-06-08 01:25:48
-------------------------
Date this century: 2012-06-16
Date this decade: 2020-02-25
Date this year: 2020-04-23
Date this month: 2020-06-14
-------------------------
2020-06-09 11:51:25
2020-06-11 11:51:25
2020-06-13 11:51:25
2020-06-15 11:51:25
2020-06-17 11:51:25
2020-06-19 11:51:25
1.11 faker函数列表
faker提供许多函数接口,本文并没有全部列出,具体见官方文档。可用的函数列表如下。直接在官方文档地址
https://faker.readthedocs.io/en/master/providers.html,点击对应的函数列表链接,便有对应的使用说明。
'''
faker.providers
faker.providers.address
faker.providers.automotive
faker.providers.bank
faker.providers.barcode
faker.providers.color
faker.providers.company
faker.providers.credit_card
faker.providers.currency
faker.providers.date_time
faker.providers.file
faker.providers.geo
faker.providers.internet
faker.providers.isbn
faker.providers.job
faker.providers.lorem
faker.providers.misc
faker.providers.person
faker.providers.phone_number
faker.providers.profile
faker.providers.python
faker.providers.ssn
faker.providers.user_agent
'''
2 参考
[编程基础] Python数据生成库Faker总结的更多相关文章
- [编程基础] Python谷歌翻译库googletrans总结
1 使用说明 本文介绍python谷歌翻译库接口googletrans的使用.具体见官方文档: https://py-googletrans.readthedocs.io/en/latest/#goo ...
- [编程基础] Python日志记录库logging总结
Python日志记录教程展示了如何使用日志记录模块在Python中进行日志记录. 文章目录 1 介绍 1.1 背景 1.2 Python日志记录模块 1.3 根记录器 2 Python logging ...
- python随机生成库faker库api详解
# -*- coding: utf-8 -*- # @Author : FELIX # @Date : 2018/6/30 9:49 from faker import Factory # zh_CN ...
- [编程基础] Python配置文件读取库ConfigParser总结
Python ConfigParser教程显示了如何使用ConfigParser在Python中使用配置文件. 文章目录 1 介绍 1.1 Python ConfigParser读取文件 1.2 Py ...
- Python数据可视化库-Matplotlib(一)
今天我们来学习一下python的数据可视化库,Matplotlib,是一个Python的2D绘图库 通过这个库,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率图,条形图,错误图,散点图等等 废 ...
- [编程基础] Python随机数生成模块总结
Python随机数生成模块教程演示如何在Python中生成伪随机数. 1 介绍 1.1 随机数字生成器 随机数生成器(RNG)生成一组在外观上不显示任何可区分模式的值.随机数生成器分为两类:硬件随机数 ...
- Unix环境高级编程(二十一)数据库函数库
本章的内容是开发一个简单的.多用户数据库的C函数库.调用此函数库提供的C语言函数,其他程序可以读取和存储数据库中的记录.绝大部分商用数据库函数库提供多进程同时更新数据库所需要的并发控制,采用建议记录锁 ...
- [编程基础] Python字符串替换笔记
Python字符串替换笔记 Python字符串替换笔记主要展示了如何在Python中替换字符串.Python中有以下几种替换字符串的方法,本文主要介绍前三种. replace方法(常用) transl ...
- [编程基础] Python命令行解析库argparse学习笔记
Python argparse教程展示了如何使用argparse模块解析Python中的命令行参数. 文章目录 1 使用说明 1.1 Python argparse可选参数 1.2 Python ar ...
随机推荐
- AdaBoost:自适应提升算法的原理及其实现
AdaBoost:通过改变训练样本权重来学习多个弱分类器并线性组合成强分类器的Boosting算法. Boosting方法要解答的两个关键问题:一是在训练过程中如何改变训练样本的权重或者概率分布,二是 ...
- MergeOption.NoTracking的使用
前两天项目维护出现一个bug,报错信息是提交出错:AcceptChanges 无法继续,因为该对象的键值与 ObjectStateManager 中的另一个对象冲突.请在调用 AcceptChange ...
- SpringBoot 自定义注解 实现多数据源
SpringBoot自定义注解实现多数据源 前置学习 需要了解 注解.Aop.SpringBoot整合Mybatis的使用. 数据准备 基础项目代码:https://gitee.com/J_look/ ...
- CentOS7虚拟机配置git仓库(配置虚拟机,网络,git仓库,windows端git访问)
想要达成的目的:从windows使用git访问CentOS7服务器上搭建的git仓库 用到的软件: (1)VMware-workstation-full-15.5.0-14665864.exe (2) ...
- spring-属性注入(外部bean方式)
xml的配置如下<bean id="userService" class="com.spring5.service.UserService"> &l ...
- python 的time、datetime模块
python 时间模块 import datetime res = datetime.datetime.now() print(res) # 2022-08-07 16:47:07.120459 ...
- jmeter——JSON提取器(从上一个请求的响应结果提取参数传给下一个请求)
记录一个参数提取过程,可供后续参考. 1. 查看响应报文的结构 将上一个请求的响应报文复制到Notepad++编辑器 JSON Viewer是Notepad++的JSON插件, Notepad++的P ...
- 2022春每日一题:Day 37
题目:[USACO14FEB]Auto-complete S 字典树套路题,字典树优化剪枝,加个cnt标记即可 代码: #include <cstdio> #include <cst ...
- wiki搭建详细过程及步骤
wiki搭建详细过程及步骤 1.查看yum库中jdk的版本 2.选择java-1.8.0安装 3.配置环境变量 4.环境变量生效 5.查看jdk是否安装成功 6.启动mysql服务 7.下载confl ...
- hashlib加密模块、加密补充说明、subprocess模块、logging日志模块
目录 hashlib加密模块 加密补充说明 subprocess模块 logging日志模块 日志的组成 日志配置字典 hashlib加密模块 1.何为加密 将明文数据处理成密文数据 让人无法看懂 2 ...