python使用Faker库进行生成模拟mock数据(基本使用+五个小案例)

这篇具有很好参考价值的文章主要介绍了python使用Faker库进行生成模拟mock数据(基本使用+五个小案例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用faker进行生成模拟(mock))数据


当我们要进行一些数据可视化的制作时,数据是必备的,但当我们手头没有真实数据又没有时间和精力去kaggle或其他网站收集数据时,且数据真实性不是特别需要时,我们可以使用faker库来进行数据的mock操作。

这就不需要爬虫去爬取真实数据,也不需要使用别人制作的API接口了!

faker库,Python,数据爬取与分析,python,开发语言,数据分析

一、Faker库安装

使用命令:

pip install Faker

进行安装

二、Faker库基本介绍

在使用Faker库之前需要有两部操作来导入和实例化。

1、导入Faker库

from faker import Faker

2、实例化Faker对象

fake = Faker()

3、基本函数介绍

以下是Faker库的一些常用功能和语法:

  • 生成随机姓名:faker.name()
  • 生成随机地址:faker.address()
  • 生成随机电子邮件地址:faker.email()
  • 生成随机手机号码:faker.phone_number()
  • 生成随机日期:faker.date()
  • 生成随机时间:faker.time()
  • 生成随机文本块:faker.text()

Faker库还提供了很多其他的功能,比如生成随机公司名称、随机颜色、随机银行卡号等等。你可以参考Faker库的官方文档来进行更深入的学习和使用。

https://faker.readthedocs.io/en/master/

三、案例1:Faker库生成核酸数据

一般我们使用Faker生成数据,使用pandas、csv或openpyxl等操作excel或csv的库将生成的数据写入。
faker库,Python,数据爬取与分析,python,开发语言,数据分析

根据场景,我们可以使用random_element来结合实际去进行生成。

fake.random_element(elements=('文化社区', '中心社区', '枫桥社区', '花园社区','棉织社区','站前社区'))

这里我在网上找了本溪市的街道名和社区名进行随机生成。

from faker import Faker
from openpyxl import Workbook

# 创建实例
fake = Faker(locale='zh_CN')

# 定义表头
headers = ['序号', '市', '区', '街道', '社区', '采集地点', '采集管号', '身份证号', '姓名', '性别', '电话', '住址',
           '年龄', '类别', '备注', '采集时间', '采集人姓名', '采集人电话', '标本类型', '接收实验室', '检测时间', '人员关系', '箱号']

# 生成数据并写入Excel
wb = Workbook()
ws = wb.active
ws.append(headers)
for i in range(1, 3000):
    row_data = [
        i,
        '本溪市',
        fake.random_element(elements=('平山区', '溪湖区', '明山区', '南芬区')),
        fake.random_element(elements=('南地街道','工人街道','平山街道','东明街道','崔东街道','北台街道','河西街道','北地街道','石桥子街道','桥头街道','金山街道','高峪街道','东兴街道','新明街道','牛心台街道','卧龙街道','火连寨街道')),
        fake.random_element(elements=('文化社区', '中心社区', '枫桥社区', '花园社区','棉织社区','站前社区')),
        fake.building_number(),
        fake.random_int(min=100000000, max=999999999),
        fake.ssn(),
        fake.name(),
        fake.random_element(elements=('男', '女')),
        fake.phone_number(),
        fake.address(),
        fake.random_int(min=1, max=100),
        fake.random_element(elements=('类别1', '类别2', '类别3')),
        'NULL',
        fake.date_time_this_year(),
        fake.name(),
        fake.phone_number(),
        fake.random_element(elements=('鼻拭子', '咽拭子', '唾液样本')),
        '本溪市核酸检测基地实验室',
        fake.date_time_this_year(),
        '本人',
        fake.random_int(min=1, max=10)
    ]
    ws.append(row_data)

# 保存文件
wb.save('data.xlsx')

结果如下:

faker库,Python,数据爬取与分析,python,开发语言,数据分析

生成的数据,如有身份证号码的雷同或手机号的雷同,纯属巧合!

生成这些数据可以应用在医疗系统的建设时充当mock数据。

四、案例2:生成不重复的人名和地名

有一些需求要求我们生成的数据不包含重复值

我们可以配合pandas库来进行生成和去重。

from faker import Faker
import pandas as pd

fake = Faker(['zh_CN', 'en_US'])

# 生成第一列数据
country1_cities = {fake.city_name() + '市' for i in range(2000)}
column1 = list(country1_cities) + [fake.state()]*2000
print(len(column1))

# 生成第二列数据
names = {fake.name() for j in range(4000)}
column2 = list(names)
print(len(column2))

# 计算每列数据的长度
len1 = len(column1)
len2 = len(column2)

# 如果列的长度不一致,则新建一个DataFrame来保证列的长度一致
if len1 != len2:
    max_len = max(len1, len2)
    dummy_df = pd.DataFrame()
    if len1 < max_len:
        dummy_df['国家或地区'] = ['']*(max_len - len1)
        column1.extend(dummy_df['国家或地区'].tolist())
    elif len2 < max_len:
        dummy_df['人名'] = ['']*(max_len - len2)
        column2.extend(dummy_df['人名'].tolist())

# 将数据转化为DataFrame
df = pd.concat([pd.DataFrame(column1, columns=['国家或地区']), pd.DataFrame(column2, columns=['人名'])], axis=1)

# 保存到csv文件中
df.to_csv('地名与人名不重复.csv', index=False)

但要注意,人名不重复很简单,可以生成中文人名和英文名。但地名不重复是有一定难度的,所以地名的生成在数量上是有限制的。

faker库,Python,数据爬取与分析,python,开发语言,数据分析

五、案例3:生成有时间期限的低保数据

我们还会遇到一些需要记录时间期限的场景,如健身卡会员期限等。

生成时间时我们可以设置开始时间和结束时间,如:

fake.date_between(start_date='-5y', end_date='today').strftime('%Y/%m/%d'),

这里我们设置开始时间是在前五年之内的,结束时间设置为今天。那么Faker就会随机生成在这五年之内的随机日期。

from faker import Faker
from openpyxl import Workbook

# 创建faker对象
fake = Faker('zh_CN')

# 创建工作表
wb = Workbook()
ws = wb.active

# 编写列头
headers = [ "序号", "年度", "单位隶属",'姓名','身份证号','保障开始时间','保障结束时间','救助情况','所属县区','所属乡镇街道','所属社区村','类型','备注'
]
ws.append(headers)

# 生成并写入200个数据条目
for i in range(3000):
    row = [
        fake.random_int(min=1, max=100),
        '2023',
        '本溪市',
        fake.name(),  # 姓名
        fake.ssn(),  # 身份证号
        fake.date_between(start_date='-5y', end_date='today').strftime('%Y/%m/%d'),
        fake.date_between(start_date='today', end_date='+5y').strftime('%Y/%m/%d'),
        fake.random_int(min=200, max=500),
        '本溪满族自治县',
        '沙尖子镇',
        fake.random_element(elements=('北沟村委会', '大华街道', '东明街道', '北台街道')),
        fake.random_element(elements=('农村低保', '城市低保', '残疾人两项补助')),
        fake.random_element(elements=('因病', '因残',)),
    ]
    ws.append(row)

# 保存工作簿
wb.save("低保数据.xlsx")

生成结果:
faker库,Python,数据爬取与分析,python,开发语言,数据分析

六、案例4:生成电力数据

关于数值类型的数据我们可以使用

fake.random_int(min=10000000000,max=99999999999)

来定义区间和类型,此外关于地址和公司名也可以随机生成

fake.address()
fake.company()

案例代码如下:

from faker import Faker
from openpyxl import Workbook

# 创建faker对象
fake = Faker('zh_CN')

# 创建工作表
wb = Workbook()
ws = wb.active

# 编写列头
headers = ['户号','户名','表号','地址','手机号','身份证号','用电量202001', '用电量202002', '用电量202003', '用电量202004', '用电量202005', '用电量202006', '用电量202007', '用电量202008', '用电量202009', '用电量202010', '用电量202011', '用电量202012', '用电量202101', '用电量202102', '用电量202103', '用电量202104', '用电量202105', '用电量202106', '用电量202107', '用电量202108', '用电量202109', '用电量202110', '用电量202111', '用电量202112', '余额','单位']
ws.append(headers)
# 生成并写入200个数据条目
for i in range(3000):
    row = [
        fake.random_int(min=10000000000,max=99999999999),
        fake.name(),
        fake.random_int(min=100000000000000000,max=999999999999999999),
        fake.address(),
        fake.phone_number(),
        fake.ssn(),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.random_int(min=1, max=400),
        fake.company(),  # 单位名称
    ]
    ws.append(row)

# 保存工作簿
wb.save("国网电力.xlsx")

faker库,Python,数据爬取与分析,python,开发语言,数据分析

七、案例5:生成房产登记数据

我们可以在生成数据时,利用字符串拼接的方式进行生成

如下列代码,我们使用循环,并随机生成j

j = random.randint(20000, 50000)
....
'本房权证平山区字第'+ str(j)+ '号' ,  # 权证号

完整代码如下

import random

import faker
import openpyxl

# 创建一个 Faker 对象
fake = faker.Faker('zh_CN')

# 创建一个 Excel 文件和工作表
wb = openpyxl.Workbook()
ws = wb.active

# 创建表头
ws.append(['编号', '区划', '权证号', '姓名', '证件类型', '身份证号', '地址', '建筑面积', '办结时间'])

# 生成数据并写入 Excel 表格
for i in range(3000):
    j = random.randint(20000, 50000)
    ws.append([
        i + 1,  # 编号
        fake.random_element(elements=('平山区', '溪湖区', '明山区', '南芬区')),  # 区划
        '本房权证平山区字第'+ str(j)+ '号' ,  # 权证号
        fake.name(),  # 姓名
        '居民身份证',  # 证件类型
        fake.ssn(min_age=18, max_age=70),  # 身份证号
        fake.address(),  # 地址
        round(fake.pyfloat( positive=True, min_value=50, max_value=200), 2),  # 建筑面积
        fake.date_between(start_date='-5y', end_date='today').strftime('%Y/%m/%d')  # 办结时间
    ])

# 保存 Excel 文件
wb.save('房产登记数据.xlsx')

结果如下:
faker库,Python,数据爬取与分析,python,开发语言,数据分析

八、总结

Faker精简应用可以帮助程序员快速生成测试数据。通过导入Faker库,并选择需要生成的随机数据类型,程序员可以轻松地创建测试数据,从而减少手动创建测试数据的工作量。

以上内容就是我的全部分享啦!祝你有个美好的一天!
faker库,Python,数据爬取与分析,python,开发语言,数据分析文章来源地址https://www.toymoban.com/news/detail-671568.html

到了这里,关于python使用Faker库进行生成模拟mock数据(基本使用+五个小案例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • EMQX(MQTT)----基本用法以及使用Python程序进行模拟流程

            EMQX是大规模分布式物联网MQTT消息服务器,除了发送接送的流量不能太大(不能用于生产!),在学习MQTT方面上有很大的优势的!         在使用该协议时,主要需要弄懂的一个知识点就是“发布者”和“订阅者”的关系,在最简单的模型中,一般会含有以上两

    2023年04月24日
    浏览(80)
  • 微信小程序开发通过mock后台数据,如何使用mock模拟后台数据,以及在小程序中使用

    作为一名前端开发人员,应该有很多像我一样不会写后台接口,但是网上非常多的项目都是需要后台数据支持的,这个时候前端开发人员可能会犯愁,现在我给大家推荐一个网站,可以帮助我们简单模拟后代数据 1.首先,在该网址https://www.fastmock.site注册登录,然后点击添加项

    2024年02月11日
    浏览(59)
  • postman-使用Postman的模拟服务来模拟(mock)后端数据,完成前端模拟API调用

    最近项目上比较忙,任务多时间紧,导致后端开发任务繁多,无法及时开发完毕,但是前端同学已经把对应功能开发完成,需要进行前后端联调来验证API及一些交互问题;这不能因为后端的进度来影响前端的工作完成情况,因此,Postman的mock数据功能就用了,确实好用。 Set

    2024年02月11日
    浏览(45)
  • 【Faker+xlsxwriter】生成测试数据并写入Excel

    一、前言 在工具开发、测试过程中,经常需要使用一些测试数据。手动制造数据的话,可能需要花费大量精力和工作量,并且容易出错,这是Faker可以帮助我们生成一些虚拟测试数据。 faker是一个开源的python库,安装完成后只需要调用Faker库,就可以帮助我们创建需要的数据

    2024年02月13日
    浏览(37)
  • python接口自动化测试 - mock模块基本使用介绍

    py3已将mock集成到unittest库中 为的就是更好的进行单元测试 简单理解, 模拟接口返回参数 通俗易懂, 直接修改接口返回参数的值 官方文档:unittest.mock --- 模拟对象库 — Python 3.11.1 文档 解决依赖问题,达到解耦作用 当我们测试某个 目标接口(模块) 时,该接口 依赖其他接

    2024年02月02日
    浏览(82)
  • spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用

    spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用 好大一批新用法,大家静下心来好好看看吧 1. spring boot 使用 Mockito.when().thenReturn()模拟返回值 Mockito 是一种 Java mock 框架,他主要就是用来做 mock 测试的,他可以模拟任何 Spring 管理的 bean、模拟方法的返回值、模拟抛出异常…

    2024年02月15日
    浏览(55)
  • 使用Mock.js和json server快速生成前端测试数据

    下面演示的是我总结的一个使用示例,帮助大家参考学习,看完后,如果大家有其他需求,可以参考Mock.js 的官方文档,需要生成哪些格式的数据,复制样例代码即可,本案例重在演示如何使用Mock.js和json server自动生成前端开发测试用的接口数据。 先创建一个项目文件夹,取

    2023年04月08日
    浏览(40)
  • 【Fiddler】Fiddler实现mock测试(模拟接口数据)

    软件接口测试过程中,经常会遇后端接口还没有开发完成,领导就让先介入测试,然后缩短项目时间,有的人肯定会懵,接口还没开发好,怎么介入测试,其实这就涉及到了我们要说的mock了。 一、mock原理 mock测试其根本任务就是能够模拟后端服务器接口数据。 其实就是提供

    2024年02月17日
    浏览(39)
  • Mock.js的基本使用方法

    官网网址:Mock.js (mockjs.com) 当前端工程师需要独立于后端并行开发时,后端接口还没有完成,那么前端怎么获取数据? 这时可以考虑前端搭建web server自己模拟假数据,这里我们选第三方库 mockjs 用来生成随机数据,拦截Ajax请求。 下面是mock的原理图: 实战案例 先下载mockjs

    2024年02月14日
    浏览(34)
  • Postman接口测试高阶——精通Mock Server模拟服务器的创建及使用等

    对于通过HTTP或HTTPS集成的任何系统,MockServer可用作: 1.模拟的配置为返回不同请求的特定响应 2.代理人记录并可选地修改请求和响应 3.都是代理人对于一些请求和一个模拟的对于同时的其他请求 当Mock Servers接收到一个请求时,它会将该请求与active进行匹配预期已经配置好的

    2024年02月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包