Faker--数据模拟神器

Faker是什么

https://github.com/joke2k/faker

这里的Faker当然不是那个Faker了。。。。。。

Faker是一个Python包,为您模拟数据。无论您是需要引导数据库、创建美观的XML文档、填写持久性以对其进行压力测试,还是对从生产服务中获取的数据进行匿名化,Faker都适合您。

 Faker包的安装

pip install Faker

卡的话可以挂载清华的镜像 

fake = Faker(locale='zh_CN')

 Faker库的简单使用

导包

from faker import Faker
fake = Faker()

初始化对象并设置语言(例如汉语)

fake = Faker(locale='zh_CN')

随机生成一个人名(默认是英文)

fake.name()
# 'Lucy Cechtelar'

随机生成一个地址

fake.address()

不得不说这个地址确实很Fake,很好地确保了数据的虚假性。

随机生成一个IP地址

print(fake.ipv4())

随机生成时间

fake.time()
fake.date()
fake.date_time()

生成csv格式

header: Optional[Sequence[str]] = ...,
data_columns: Tuple[str, str] = ...,
num_rows: int = ...,
include_row_ids: bool = ...,
print(fake.csv(('id', 'name'), ('1', 'tom'), 1))

"id","name"
"1","tom" 

支持自己构建生成器

from faker import Faker
from faker.providers import DynamicProvider

medical_professions_provider = DynamicProvider(
     provider_name="medical_profession",
     elements=["dr.", "doctor", "nurse", "surgeon", "clerk"],
)

fake = Faker()

# then add new provider to faker instance
fake.add_provider(medical_professions_provider)

# now you can use:
fake.medical_profession()
# 'dr.'

还有很多高级的用法(例如Factory Boy大家可以自行探索)

 https://github.com/joke2k/faker

实战案例之电商消费数据模拟

代码如下

from faker import Faker
from datetime import datetime
import random

# 指定语言为中文
fake = Faker(locale='zh_CN')


def generate_ecommerce_data(num_records):
    data = []
    for _ in range(num_records):
        # 生成中文姓名
        name = fake.name()
        order_id = f"OD{datetime.now().strftime('%Y%m%d%H%M%S')}{random.randint(1000, 9999)}"

        products = ["手机", "电脑", "书籍", "服装", "鞋子"]
        product = random.choice(products)

        quantity = random.randint(1, 10)

        purchase_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

        data.append({
            '姓名': name,
            '订单号': order_id,
            '购买商品': product,
            '购买数量': quantity,
            '购买时间': purchase_time
        })

    return data


ecommerce_data = generate_ecommerce_data(10)

for record in ecommerce_data:
    print(record)

 

 结果如下

 {'姓名': '农峰', '订单号': 'OD202408160937046879', '购买商品': '电脑', '购买数量': 9, '购买时间': '2024-08-16 09:37:04'}
{'姓名': '王军', '订单号': 'OD202408160937048315', '购买商品': '书籍', '购买数量': 6, '购买时间': '2024-08-16 09:37:04'}
{'姓名': '居琳', '订单号': 'OD202408160937046175', '购买商品': '电脑', '购买数量': 7, '购买时间': '2024-08-16 09:37:04'}
{'姓名': '靳英', '订单号': 'OD202408160937042706', '购买商品': '书籍', '购买数量': 3, '购买时间': '2024-08-16 09:37:04'}
{'姓名': '沈雷', '订单号': 'OD202408160937047974', '购买商品': '服装', '购买数量': 4, '购买时间': '2024-08-16 09:37:04'}
{'姓名': '陈凤兰', '订单号': 'OD202408160937049359', '购买商品': '手机', '购买数量': 10, '购买时间': '2024-08-16 09:37:04'}
{'姓名': '桑春梅', '订单号': 'OD202408160937043721', '购买商品': '服装', '购买数量': 7, '购买时间': '2024-08-16 09:37:04'}
{'姓名': '李淑英', '订单号': 'OD202408160937049801', '购买商品': '手机', '购买数量': 3, '购买时间': '2024-08-16 09:37:04'}
{'姓名': '张燕', '订单号': 'OD202408160937045693', '购买商品': '鞋子', '购买数量': 8, '购买时间': '2024-08-16 09:37:04'}
{'姓名': '包兵', '订单号': 'OD202408160937042562', '购买商品': '鞋子', '购买数量': 3, '购买时间': '2024-08-16 09:37:04'}

 

 

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值