Python使用Faker库实现数据生成的示例详解

作者:

文章目录
  • 老板说要“假数据”,我真的慌了! 前几天,老板突然甩给我一个需求:“咱们数据库里数据太少,先搞点测试数据看看效果。” 我心想,这还不简单?随便写个for循环,random.randint()往里一丢,不就完事了? 结果老板补了一句:“要真实点的,比如姓名、地址、手机号、邮箱那种。” 这时候,我的大脑已经在疯狂计算: 姓名?我得找个姓氏 + 名字的列表拼接? 地址?手写全国地名? 手机号?光头脑袋都要想秃了! 就在我以为要手动编写一万个假数据,熬夜到秃头的时候,我发现了 Faker 这个神奇的库。 朋友们,假数据生成,我们程序员才是专业的! 
  • Faker 是 Python 里的一个第三方库,专门用来 生成假数据。不管你要姓名、手机号、邮箱,还是地址、公司名、银行卡号,它都能轻松生成! 你甚至可以用它生成一份“假简历”,完美应付“我有五年工作经验”的尴尬问题(当然,咱们做人要诚信,别真的造假哦)。
  • 安装Faker比安装游戏还简单 用 pip 安装它,简单到不行: pip install faker 然后,在 Python 里试试看: from faker import Faker fake = Faker() print(fake.name()) # 随机生成一个名字 print(fake.address()) # 随机生成一个地址 print(fake.email()) # 随机生成一个邮箱 运行结果可能是: Michael Johnson1234 Elm Street, Springfield, IL 62704michael.johnson@example.com 怎么样,效果还不错吧?这名字听着就像个正经人 
  • Faker 的用法很简单,核心思路就是 创建一个 Faker 实例,然后调用它的各种方法 生成不同类型的数据。 1. 生成不同语言的假数据 默认情况下,Faker 生成的是英文数据,如果要生成中文数据,可以加个 "zh_CN": from faker import Faker fake = Faker(“zh_CN”) print(fake.name()) # 随机生成一个名字 print(fake.address()) # 随机生成一个地址 print(fake.email()) # 随机生成一个邮箱 运行结果: 赵建军广西壮族自治区琴市怀柔贵阳路C座 684728guiying80@example.com Faker 支持 90+ 种语言 常见的 Faker 语言代码如下: 语言 代码 语言 代码 中文(中国) zh_CN 英文(美国) en_US 英文(英国) en_GB 日语 ja_JP 韩语 ko_KR 法语(法国) fr_FR 德语(德国) de_DE 俄语 ru_RU 西班牙语(西班牙) es_ES 意大利语 it_IT 葡萄牙语(巴西) pt_BR 荷兰语 nl_NL 印度语 hi_IN 阿拉伯语 ar_EG 如果你想查看 Faker 完整的语言列表,可以运行: from faker.config import AVAILABLE_LOCALES print(AVAILABLE_LOCALES) 这样就能看到所有 Faker 支持的语言代码 了! 2. 批量生成 N 条假数据 如果你要一次生成 1000 条数据,总不能手动调用 1000 次吧?这时候,for 循环派上用场了! for _ in range(5): # 生成5条数据 print(fake.name(), fake.email(), fake.job()) 运行结果: 王芳 wang.fang@example.com 软件工程师小强 liqiang@example.com 数据分析师张伟 zhangwei@example.com 网络安全专家刘娜 liuna@example.com 人力资源经理赵磊 zhaolei@example.com 产品经理 如果你要生成 一整张表的数据,比如导出到 Excel,那该怎么做呢?往下看
  • 假设我们要生成一份 1000 条用户信息的 Excel 表,包含 姓名、邮箱、手机号、公司、职位。 这时候,我们可以用 Faker + pandas,轻松完成导出 Excel 的任务! 代码示例 import pandas as pd from faker import Faker fake = Faker(“zh_CN”) # 生成 1000 条假数据 data = [] for _ in range(1000): data.append([ fake.name(), fake.email(), fake.phone_number(), fake.company(), fake.job() ]) # 用 pandas 创建 DataFrame df = pd.DataFrame(data, columns=[“姓名”, “邮箱”, “手机号”, “公司”, “职位”]) # 保存到 Excel df.to_excel(“fake_users.xlsx”, index=False) print(“Excel 生成完毕,快去看看吧!🚀”) 代码解读: 用 fake.name() 生成中文姓名 用 fake.email() 生成邮箱 用 fake.phone_number() 生成手机号 用 fake.company() 生成公司名 用 fake.job() 生成职位 最后用 pandas 存入 Excel,这样就可以轻松导出一份假数据表格!
  • 如果你想用 Faker 生成 模拟 API 接口返回的数据,可以使用 json 或 dict 结构,然后格式化输出。下面介绍几种常见的方法: 方法 1:简单接口数据(JSON 格式) import json from faker import Faker fake = Faker(“zh_CN”) # 生成中文数据 # 生成一条用户数据 data = { “user_id”: fake.uuid4(), “name”: fake.name(), “email”: fake.email(), “phone”: fake.phone_number(), “address”: fake.address(), “company”: fake.company(), “job”: fake.job(), “created_at”: fake.date_time_this_year().isoformat(), } # 转换成 JSON 格式输出 print(json.dumps(data, indent=4, ensure_ascii=False)) 示例输出(JSON 数据): { “user_id”: “f0da2b7b-1159-4f90-800c-6ed59be66523”, “name”: “黄海燕”, “email”: “yqiao@example.org”, “phone”: “13648640903”, “address”: “青海省杨县龙潭哈尔滨街R座 713788”, “company”: “恒聪百汇传媒有限公司”, “job”: “炼胶工”, “created_at”: “2025-01-19T22:03:55” } 方法 2:批量生成接口数据 如果需要 一次性生成多条数据(比如 10 个用户),可以用 列表解析 生成 JSON 数组: data_list = [ { “user_id”: fake.uuid4(), “name”: fake.name(), “email”: fake.email(), “phone”: fake.phone_number(), “company”: fake.company(), “job”: fake.job(), “created_at”: fake.date_time_this_year().isoformat(), } for _ in range(10) # 生成 10 条数据 ] # 转换成 JSON 格式输出 print(json.dumps(data_list, indent=4, ensure_ascii=False)) 示例输出(JSON 数组): [ { “user_id”: “ac9c9caa-2134-437e-beb6-ebc334d90ae1”, “name”: “苏建国”, “email”: “maqiang@example.org”, “phone”: “15895021634”, “company”: “天开传媒有限公司”, “job”: “管家部经理/主管”, “created_at”: “2025-03-06T05:23:05” }, { “user_id”: “6525642b-d7e5-4299-a3d9-1cee60cbfd4c”, “name”: “冯晶”, “email”: “li54@example.com”, “phone”: “13896607243”, “company”: “九方科技有限公司”, “job”: “区域销售经理”, “created_at”: “2025-03-27T05:20:20” }, …… 此处省略8条数据 ] 方法 3:使用 Flask 搭建一个 Mock API 如果你想让前端可以直接访问 http://127.0.0.1:5000/api/users 来获取假数据,可以结合 Flask 搭建一个本地 API 接口: from flask import Flask, jsonify from faker import Faker app = Flask(__name__) fake = Faker(“zh_CN”) # 定义一个 API 端点 @app.route(“/api/users”, methods=[“GET”]) def get_users(): users = [ { “user_id”: fake.uuid4(), “name”: fake.name(), “email”: fake.email(), “phone”: fake.phone_number(), “company”: fake.company(), “job”: fake.job(), “created_at”: fake.date_time_this_year().isoformat(), } for _ in range(2) # 生成 2 条数据 ] return jsonify(users) if __name__ == “__main__”: app.run(debug=True) 运行后,访问: http://127.0.0.1:5000/api/users 返回 JSON 响应 这样,你就有了一个可以模拟 API 接口的本地服务适用于前端调用、测试 API 数据。
  • 1. Faker 还能生成信用卡、IP 地址! print(fake.ssn()) # 生成随机身份证号 print(fake.credit_card_number()) # 生成信用卡号 print(fake.ipv4()) # 生成 IPv4 地址 2. Faker可以模拟哪些数据 如果你想查看 Faker 可以生成哪些类型的数据,可以使用以下方法: from faker import Faker fake = Faker() print(dir(fake)) # 查看所有可用的方法 3. 让假数据“可复现” 有时候,我们希望生成的假数据 每次都一样(比如写测试用例时)。这时候,可以用 seed() 方法: fake.seed_instance(42) # 设置种子 print(fake.name()) # 这次和下次运行都会是同一个名字 4. 生成定制格式的数据 你是不是以为 Faker 只能生成那些官方定义好的字段?其实,它还能按 自定义格式 生成数据! fake.seed_instance(42) # 设置种子 print(fake.name()) # 这次和下次运行都会是同一个名字 5. 生成 “看起来更真实” 的数据 有时候,默认的 name()、address() 生成的数据虽然随机,但不够真实。你可以指定某些值更常见! # 让特定公司名更常见 company_list = [“阿里巴巴”, “腾讯”, “华为”, “百度”, “字节跳动”] print(fake.random_element(company_list)) # 随机公司 # 指定某些姓氏更常见 last_names = [“张”, “王”, “李”, “赵”, “刘”] print(fake.last_name() + fake.first_name()) # 更真实的姓名 6. 生成唯一 & 不重复数据 Faker 可能会生成重复的数据?不怕,我们有 unique 这个大招 print(fake.unique.email()) # 生成不重复的 email print(fake.unique.name()) # 生成不重复的姓名 fake.unique.xxx() 让 Faker 确保不会重复 避免数据库主键重复,特别适合批量造数据 到此这篇关于Python使用Faker库实现数据生成的示例详解的文章就介绍到这了,更多相关Python Faker生成数据内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python faker生成器生成虚拟数据代码实例 python利用faker库批量生成测试数据 python产生模拟数据faker库的使用详解 python用faker库批量生成假数据 python使用Faker进行随机数据生成 基于Python利用Faker批量测试数据 Python Faker批量生成测试数据的实现
  • 目录
    • 前言
    • Faker:Python的“造假专家”
    • 安装 Faker
    • Faker的核心用法
    • 实战1:生成测试数据并导出 Excel
    • 实战2:模拟 API 接口返回的数据
    • 容易被忽略的 Faker 小技巧

    老板说要“假数据”,我真的慌了!

    前几天,老板突然甩给我一个需求:“咱们数据库里数据太少,先搞点测试数据看看效果。”

    我心想,这还不简单?随便写个for循环,random.randint()往里一丢,不就完事了?

    结果老板补了一句:“要真实点的,比如姓名、地址、手机号、邮箱那种。”

    这时候,我的大脑已经在疯狂计算:

    • 姓名?我得找个姓氏 + 名字的列表拼接?
    • 地址?手写全国地名?
    • 手机号?光头脑袋都要想秃了!

    就在我以为要手动编写一万个假数据,熬夜到秃头的时候,我发现了 Faker 这个神奇的库。

    朋友们,假数据生成,我们程序员才是专业的! 

    Faker 是 Python 里的一个第三方库,专门用来 生成假数据。不管你要姓名、手机号、邮箱,还是地址、公司名、银行卡号,它都能轻松生成!

    你甚至可以用它生成一份“假简历”,完美应付“我有五年工作经验”的尴尬问题(当然,咱们做人要诚信,别真的造假哦)。

    安装Faker比安装游戏还简单

    用 pip 安装它,简单到不行:

    pip install faker

    然后,在 Python 里试试看:

    from faker import Faker
    
    fake = Faker()
    print(fake.name())  # 随机生成一个名字
    print(fake.address())  # 随机生成一个地址
    print(fake.email())  # 随机生成一个邮箱
    

    运行结果可能是:

    Michael Johnson
    1234 Elm Street, Springfield, IL 62704
    michael.johnson@example.com

    怎么样,效果还不错吧?这名字听着就像个正经人 

    Faker 的用法很简单,核心思路就是 创建一个 Faker 实例,然后调用它的各种方法 生成不同类型的数据。

    1. 生成不同语言的假数据

    默认情况下,Faker 生成的是英文数据,如果要生成中文数据,可以加个 "zh_CN"

    from faker import Faker
    
    fake = Faker("zh_CN")
    print(fake.name())  # 随机生成一个名字
    print(fake.address())  # 随机生成一个地址
    print(fake.email())  # 随机生成一个邮箱
    

    运行结果:

    赵建军
    广西壮族自治区琴市怀柔贵阳路C座 684728
    guiying80@example.com

    Faker 支持 90+ 种语言 常见的 Faker 语言代码如下:

    语言 代码 语言 代码
    中文(中国) zh_CN 英文(美国) en_US
    英文(英国) en_GB 日语 ja_JP
    韩语 ko_KR 法语(法国) fr_FR
    德语(德国) de_DE 俄语 ru_RU
    西班牙语(西班牙) es_ES 意大利语 it_IT
    葡萄牙语(巴西) pt_BR 荷兰语 nl_NL
    印度语 hi_IN 阿拉伯语 ar_EG

    如果你想查看 Faker 完整的语言列表,可以运行:

    from faker.config import AVAILABLE_LOCALES
    print(AVAILABLE_LOCALES)
    

    这样就能看到所有 Faker 支持的语言代码 了!

    2. 批量生成 N 条假数据

    如果你要一次生成 1000 条数据,总不能手动调用 1000 次吧?这时候,for 循环派上用场了!

    for _ in range(5):  # 生成5条数据
        print(fake.name(), fake.email(), fake.job())
    

    运行结果:

    王芳 wang.fang@example.com 软件工程师
    小强 liqiang@example.com 数据分析师
    张伟 zhangwei@example.com 网络安全专家
    刘娜 liuna@example.com 人力资源经理
    赵磊 zhaolei@example.com 产品经理

    如果你要生成 一整张表的数据,比如导出到 Excel,那该怎么做呢?往下看

    假设我们要生成一份 1000 条用户信息的 Excel 表,包含 姓名、邮箱、手机号、公司、职位

    这时候,我们可以用 Faker + pandas,轻松完成导出 Excel 的任务!

    代码示例

    import pandas as pd
    from faker import Faker
    
    fake = Faker("zh_CN")
    
    # 生成 1000 条假数据
    data = []
    for _ in range(1000):
        data.append([
            fake.name(),
            fake.email(),
            fake.phone_number(),
            fake.company(),
            fake.job()
        ])
    
    # 用 pandas 创建 DataFrame
    df = pd.DataFrame(data, columns=["姓名", "邮箱", "手机号", "公司", "职位"])
    
    # 保存到 Excel
    df.to_excel("fake_users.xlsx", index=False)
    
    print("Excel 生成完毕,快去看看吧!🚀")
    

    代码解读:

    • fake.name() 生成中文姓名
    • fake.email() 生成邮箱
    • fake.phone_number() 生成手机号
    • fake.company() 生成公司名
    • fake.job() 生成职位
    • 最后用 pandas 存入 Excel,这样就可以轻松导出一份假数据表格!

    如果你想用 Faker 生成 模拟 API 接口返回的数据,可以使用 jsondict 结构,然后格式化输出。下面介绍几种常见的方法:

    方法 1:简单接口数据(JSON 格式)

    import json
    from faker import Faker
    
    fake = Faker("zh_CN")  # 生成中文数据
    
    # 生成一条用户数据
    data = {
        "user_id": fake.uuid4(),
        "name": fake.name(),
        "email": fake.email(),
        "phone": fake.phone_number(),
        "address": fake.address(),
        "company": fake.company(),
        "job": fake.job(),
        "created_at": fake.date_time_this_year().isoformat(),
    }
    
    # 转换成 JSON 格式输出
    print(json.dumps(data, indent=4, ensure_ascii=False))
    

    示例输出(JSON 数据):

    {
        "user_id": "f0da2b7b-1159-4f90-800c-6ed59be66523",
        "name": "黄海燕",
        "email": "yqiao@example.org",
        "phone": "13648640903",
        "address": "青海省杨县龙潭哈尔滨街R座 713788",
        "company": "恒聪百汇传媒有限公司",
        "job": "炼胶工",
        "created_at": "2025-01-19T22:03:55"
    }
    

    方法 2:批量生成接口数据

    如果需要 一次性生成多条数据(比如 10 个用户),可以用 列表解析 生成 JSON 数组:

    data_list = [
        {
            "user_id": fake.uuid4(),
            "name": fake.name(),
            "email": fake.email(),
            "phone": fake.phone_number(),
            "company": fake.company(),
            "job": fake.job(),
            "created_at": fake.date_time_this_year().isoformat(),
        }
        for _ in range(10)  # 生成 10 条数据
    ]
    
    # 转换成 JSON 格式输出
    print(json.dumps(data_list, indent=4, ensure_ascii=False))
    

    示例输出(JSON 数组):

    [    
        {
            "user_id": "ac9c9caa-2134-437e-beb6-ebc334d90ae1",
            "name": "苏建国",
            "email": "maqiang@example.org",
            "phone": "15895021634",
            "company": "天开传媒有限公司",
            "job": "管家部经理/主管",
            "created_at": "2025-03-06T05:23:05"
        },
        {
            "user_id": "6525642b-d7e5-4299-a3d9-1cee60cbfd4c",
            "name": "冯晶",
            "email": "li54@example.com",
            "phone": "13896607243",
            "company": "九方科技有限公司",
            "job": "区域销售经理",
            "created_at": "2025-03-27T05:20:20"
        },
        …… 此处省略8条数据
    ]
    

    方法 3:使用 Flask 搭建一个 Mock API

    如果你想让前端可以直接访问 http://127.0.0.1:5000/api/users 来获取假数据,可以结合 Flask 搭建一个本地 API 接口:

    from flask import Flask, jsonify
    from faker import Faker
    
    app = Flask(__name__)
    fake = Faker("zh_CN")
    
    # 定义一个 API 端点
    @app.route("/api/users", methods=["GET"])
    def get_users():
        users = [
            {
                "user_id": fake.uuid4(),
                "name": fake.name(),
                "email": fake.email(),
                "phone": fake.phone_number(),
                "company": fake.company(),
                "job": fake.job(),
                "created_at": fake.date_time_this_year().isoformat(),
            }
            for _ in range(2)  # 生成 2 条数据
        ]
        return jsonify(users)
    
    if __name__ == "__main__":
        app.run(debug=True)
    

    运行后,访问:

    http://127.0.0.1:5000/api/users

    返回 JSON 响应

    这样,你就有了一个可以模拟 API 接口的本地服务适用于前端调用、测试 API 数据。

    1. Faker 还能生成信用卡、IP 地址!

    print(fake.ssn())  # 生成随机身份证号
    print(fake.credit_card_number())  # 生成信用卡号
    print(fake.ipv4())  # 生成 IPv4 地址
    

    2. Faker可以模拟哪些数据

    如果你想查看 Faker 可以生成哪些类型的数据,可以使用以下方法:

    from faker import Faker
    
    fake = Faker()
    print(dir(fake))  # 查看所有可用的方法

    3. 让假数据“可复现”

    有时候,我们希望生成的假数据 每次都一样(比如写测试用例时)。这时候,可以用 seed() 方法:

    fake.seed_instance(42)  # 设置种子
    print(fake.name())  # 这次和下次运行都会是同一个名字
    

    4. 生成定制格式的数据

    你是不是以为 Faker 只能生成那些官方定义好的字段?其实,它还能按 自定义格式 生成数据!

    fake.seed_instance(42)  # 设置种子
    print(fake.name())  # 这次和下次运行都会是同一个名字
    

    5. 生成 “看起来更真实” 的数据

    有时候,默认的 name()address() 生成的数据虽然随机,但不够真实。你可以指定某些值更常见!

    # 让特定公司名更常见
    company_list = ["阿里巴巴", "腾讯", "华为", "百度", "字节跳动"]
    print(fake.random_element(company_list))  # 随机公司
    
    # 指定某些姓氏更常见
    last_names = ["张", "王", "李", "赵", "刘"]
    print(fake.last_name() + fake.first_name())  # 更真实的姓名
    

    6. 生成唯一 & 不重复数据

    Faker 可能会生成重复的数据?不怕,我们有 unique 这个大招

    print(fake.unique.email())  # 生成不重复的 email
    print(fake.unique.name())   # 生成不重复的姓名
    
    • fake.unique.xxx() 让 Faker 确保不会重复
    • 避免数据库主键重复,特别适合批量造数据

    到此这篇关于Python使用Faker库实现数据生成的示例详解的文章就介绍到这了,更多相关Python Faker生成数据内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python faker生成器生成虚拟数据代码实例
    • python利用faker库批量生成测试数据
    • python产生模拟数据faker库的使用详解
    • python用faker库批量生成假数据
    • python使用Faker进行随机数据生成
    • 基于Python利用Faker批量测试数据
    • Python Faker批量生成测试数据的实现

    站内搜索