Python中第三方库Faker的使用详解


Posted in Python onApril 02, 2022

背景介绍

今天介绍Python中一个超级神奇的库,99%人用过都喜欢它,剩下的1%没用过!

在如今的大数据时代,数据的价值可想而知。有时候为了做测试,需要模拟真实的环境,但是又不能直接使用真实数据,就需要我们认为制造一些数据出来。

对比Excel,我还是觉得Python制造这样的 "虚拟" 数据,更省时、省力。

周末,突然想到了曾今做过的这个问题,这里为大家做个复盘吧!

需求: 老板让模拟一批数据,用于项目实验,由于一些真实数据不能展示出来,我需要模拟一些数据,字段包括:姓名、所在省份、详细地址、手机号、身份证号、出生年月、邮箱等。

当然,这批数据肯定是需要你最终写入到Excel中,一次性交给老板的。那么,这样的需求,你会做吗?

实战:模拟1w条数据写入Excel

在讲述基础之前,直接上实战,让大家体会一下,如何将生成的模拟数据,最终写入到Excel文件中。

from faker import Faker
import pandas as pd
 
fake = Faker(["zh_CN"])
Faker.seed(0)

def get_data():
    key_list = ["姓名","详细地址","所在省份","手机号","身份证号","出生年月","邮箱"]
    name = fake.name()
    address = fake.address()
    province = address[:3]
    number = fake.phone_number()
    id_card = fake.ssn()
    birth_date = id_card[6:14]
    email = fake.email()
    info_list = [name,address,province,number,id_card,birth_date,email]
    person_info = dict(zip(key_list,info_list))
    return person_info


df = pd.DataFrame(columns=["姓名","详细地址","所在省份","手机号","身份证号","出生年月","邮箱"])
for i in range(10000):
    person_info = [get_data()]
    df1 = pd.DataFrame(person_info)
    df = pd.concat([df,df1])
df.to_excel("模拟数据.xlsx",index=None)

结果如下:

Python中第三方库Faker的使用详解

上述数据纯属模拟,如果雷同,请勿对号!

Python库讲解

这么好用的Python库,究竟应该怎么使用呢?

我们直接使用下面的代码,可以完成这个库的安装。

pip install Faker -i https://pypi.tuna.tsinghua.edu.cn/simple/

使用之前,使用如下代码,导入这个库。

from faker import Faker

在讲述写入到Excel之前,我们先分布讲述一下,每个函数的用法。

1. 生成姓名

fake = Faker(locale='zh_CN')
name = fake.name()
name

结果如下:

Python中第三方库Faker的使用详解

2. 生成详细地址

address = fake.address()
address

结果如下:

Python中第三方库Faker的使用详解

3. 生成所在省份

province = address[:3]
province

结果如下:

Python中第三方库Faker的使用详解

由于这个函数每次运行结果都不一样,所以我才用切片方式,生成省份。当然这里也有特定函数,生成省份。

fake.province()

结果如下:

Python中第三方库Faker的使用详解

4. 生成手机号

number = fake.phone_number()
number

结果如下:

Python中第三方库Faker的使用详解

5. 生成身份证号

id_card = fake.ssn()
id_card

结果如下:

Python中第三方库Faker的使用详解

6. 生成出生年月

birth_date = id_card[6:14]
birth_date

结果如下:

Python中第三方库Faker的使用详解

7. 生成邮箱

email = fake.email()
email

结果如下:

Python中第三方库Faker的使用详解

补充

当然,faker库不仅可以帮助我们生成上述信息,还有很多其它方法可用,这些方法分为以下几类:

  • address 地址
  • person 人物类:性别、姓名等
  • barcode 条码类
  • color 颜色类
  • company 公司类:公司名、email、公司名前缀等
  • credit_card 银行卡类:卡号、有效期、类型等
  • currency 货币
  • date_time 时间日期类:日期、年、月等
  • file 文件类:文件名、文件类型、文件扩展名等
  • internet 互联网类
  • job 工作
  • lorem 乱数假文
  • misc 杂项类
  • phone_number 手机号码类:手机号、运营商号段
  • python python数据
  • profile 人物描述信息:姓名、性别、地址、公司等
  • ssn 社会安全码(身份证号码)
  • user_agent 用户代理

关于这些方法的使用,我们直接参考faker的官网,用起来超方便。

1. address 地址

fake.country()  # 国家
fake.city()  # 城市
fake.city_suffix()  # 城市的后缀,中文是:市或县
fake.address()  # 地址
fake.street_address()  # 街道
fake.street_name()  # 街道名
fake.postcode()  # 邮编
fake.latitude()  # 维度
fake.longitude()  # 经度

2. person 人物

fake.name() # 姓名
fake.last_name() # 姓
fake.first_name() # 名
fake.name_male() # 男性姓名
fake.last_name_male() # 男性姓
fake.first_name_male() # 男性名
fake.name_female() # 女性姓名

3. color 颜色

fake.hex_color() # 16进制表示的颜色
fake.rgb_css_color() # css用的rgb色
fake.rgb_color()  # 表示rgb色的字符串
fake.color_name() # 颜色名字
fake.safe_hex_color()  #安全16进制色
fake.safe_color_name() # 安全颜色名字

4. company 公司

fake.company() # 公司名
fake.company_suffix() # 公司名后缀

5. credit_card 银行信用卡

fake.credit_card_number(card_type=None) # 卡号
fake.credit_card_provider(card_type=None) # 卡的提供者
fake.credit_card_security_code(card_type=None)# 卡的安全密码
fake.credit_card_expire() # 卡的有效期
fake.credit_card_full(card_type=None) # 完整卡信息

6. date_time 时间日期

fake.date_time(tzinfo=None) # 随机日期时间
fake.iso8601(tzinfo=None) # 以iso8601标准输出的日期
fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None) # 本月的某个日期
fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None) # 本年的某个日期
fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)  # 本年代内的一个日期
fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None)  # 本世纪一个日期
fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None)  # 两个时间间的一个随机时间
fake.timezone() # 时区
fake.time(pattern="%H:%M:%S") # 时间(可自定义格式)
fake.am_pm() # 随机上午下午
fake.month() # 随机月份
fake.month_name() # 随机月份名字
fake.year() # 随机年
fake.day_of_week() # 随机星期几
fake.day_of_month() # 随机月中某一天
fake.time_delta() # 随机时间延迟
fake.date_object()  # 随机日期对象
fake.time_object() # 随机时间对象
fake.unix_time() # 随机unix时间(时间戳)
fake.date(pattern="%Y-%m-%d") # 随机日期(可自定义格式)
fake.date_time_ad(tzinfo=None)  # 公元后随机日期

7. file 文件

fake.file_name(category="image", extension="png") # 文件名(指定文件类型和后缀名)
fake.file_name() # 随机生成各类型文件
fake.file_extension(category=None) # 文件后缀
fake.mime_type(category=None) # mime-type

8. internet 互联网

fake.ipv4(network=False)  # ipv4地址
fake.ipv6(network=False)  # ipv6地址
fake.uri_path(deep=None) # uri路径
fake.uri_extension() # uri扩展名
fake.uri() # uri
fake.url() # url
fake.image_url(width=None, height=None)  # 图片url
fake.domain_word() # 域名主体
fake.domain_name() # 域名
fake.tld() # 域名后缀
fake.user_name() # 用户名
fake.user_agent() # UA
fake.mac_address() # MAC地址
fake.safe_email() # 安全邮箱
fake.free_email() # 免费邮箱
fake.company_email()  # 公司邮箱
fake.email() # 邮箱

9. job 工作

fake.job()#工作职位

10. lorem 乱数假文

fake.text(max_nb_chars=200) # 随机生成一篇文章
fake.word() # 随机单词
fake.words(nb=3)  # 随机生成几个字
fake.sentence(nb_words=6, variable_nb_words=True)  # 随机生成一个句子
fake.sentences(nb=3) # 随机生成几个句子
fake.paragraph(nb_sentences=3, variable_nb_sentences=True)  # 随机生成一段文字(字符串)
fake.paragraphs(nb=3)  # 随机生成成几段文字(列表)

11. phone_number 电话号码

fake.phone_number() # 手机号码
fake.phonenumber_prefix() # 运营商号段,手机号码前三位

12. ssn 社会安全码(身份证)

fake.ssn() # 随机生成身份证号(18位)

13. user_agent 用户代理

fake.user_agent()

以上就是Python中第三方库Faker的使用详解的详细内容,更多关于Python Faker库的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
Jul 02 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
对python3 urllib包与http包的使用详解
May 10 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
如何使用Python自动控制windows桌面
Jul 11 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
Feb 25 Python
Python startswith()和endswith() 方法原理解析
Apr 28 Python
基于Python正确读取资源文件
Sep 14 Python
Django中ORM的基本使用教程
Dec 22 Python
Flask response响应的具体使用
Jul 15 Python
Python数据处理的三个实用技巧分享
Python+Tkinter打造签名设计工具
Python正则表达式中flags参数的实例详解
Apr 01 #Python
Python+Tkinter制作专属图形化界面
Pyhton爬虫知识之正则表达式详解
python 离散点图画法的实现
Python学习之迭代器详解
You might like
PHP三元运算符的结合性介绍
2012/01/10 PHP
浅析PHP 按位与或 (^ 、&)
2013/06/21 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
Python之Web框架Django项目搭建全过程
2017/05/02 Python
python for循环remove同一个list过程解析
2019/08/14 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Python 远程开关机的方法
2020/11/18 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
优秀实习自我鉴定
2013/12/04 职场文书
户籍证明的格式
2014/01/13 职场文书
初中政治教学反思
2014/01/17 职场文书
物流管理专业自荐信
2014/06/23 职场文书
卖车协议书范例
2014/09/16 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
详解Vue的列表渲染
2021/11/20 Vue.js
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android