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

您所在的位置:网站首页 数据库生成随机数据的方法 python使用Faker库进行生成模拟mock数据(基本使用+五个小案例)

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

2024-07-15 00:23| 来源: 网络整理| 查看: 265

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

文章目录 使用faker进行生成模拟(mock))数据一、Faker库安装二、Faker库基本介绍三、案例1:Faker库生成核酸数据四、案例2:生成不重复的人名和地名五、案例3:生成有时间期限的低保数据六、案例4:生成电力数据七、案例5:生成房产登记数据八、总结 当我们要进行一些数据可视化的制作时,数据是必备的,但当我们手头没有真实数据又没有时间和精力去kaggle或其他网站收集数据时,且数据真实性不是特别需要时,我们可以使用faker库来进行数据的mock操作。

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

一、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的库将生成的数据写入。 在这里插入图片描述

根据场景,我们可以使用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')

结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z2Ch7K58-1686476514245)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230611171609705.png)]

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

生成这些数据可以应用在医疗系统的建设时充当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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3