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'}