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 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
python如何实现一个刷网页小程序
Nov 27 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
Django分页功能的实现代码详解
Jul 29 Python
pytorch模型存储的2种实现方法
Feb 14 Python
Django 项目布局方法(值得推荐)
Mar 22 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
Python离线安装各种库及pip的方法
Nov 28 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
Python3使用Selenium获取session和token方法详解
Feb 16 Python
Python中os模块的简单使用及重命名操作
Apr 17 Python
Python数据处理的三个实用技巧分享
Python+Tkinter打造签名设计工具
Python正则表达式中flags参数的实例详解
Apr 01 #Python
Python+Tkinter制作专属图形化界面
Pyhton爬虫知识之正则表达式详解
python 离散点图画法的实现
Python学习之迭代器详解
You might like
二招解决php乱码问题
2012/03/25 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
CentOS安装php v8js教程
2015/02/26 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
javascript中Function类型详解
2015/04/28 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
详解Python中dict与set的使用
2015/08/10 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
python实现数据图表
2017/07/29 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
Python 如何对文件目录操作
2020/07/10 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
乡镇交通安全实施方案
2014/03/29 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
关于感恩的作文
2019/08/26 职场文书