python创造虚拟中文名字、住址

在学习数据分析时,数据的获取一般是个问题,为了获取自己需要的特定数据,就会涉及到使用代码进行数据创建。普通的浮点型、或者整型数据使用随机数工具库就可以生成,而中文数据的构造难度就要高一些,一般都是从文字库里随机遍历提取,但是中文名字数据又会有一些新的难题,比如姓氏和名字的排列,这种一般是需要设置姓氏库和名字库,然后再进行组合。这种操作虽然满足需求但是构造过程比较复杂。

虚拟数据库

为了解决这个问题最近在对deepseek发起提问以后发现了faker这个库,顾名思义就是创建虚拟数据的,当然他的强大不仅仅在于可以生成虚拟中文名字,还可以生成包括具体住址等其他中午呢数据,完整代码如下:

import pandas as pd
from faker import Faker
import random

# 初始化中文假数据生成器
fake = Faker('zh_CN')

# 设置随机种子保证可重复性
random.seed(42)
Faker.seed(42)

# 创建空数据集
data = {
    '姓名': [],
    '年龄': [],
    '年级': [],
    '成绩': [],
    '住址': []
}

# 生成200条记录
for _ in range(200):
    data['姓名'].append(fake.name())
    data['年龄'].append(random.randint(12, 18))  # 年龄范围12-18岁
    data['年级'].append(random.choice(['初一', '初二', '初三', '高一', '高二', '高三']))
    data['成绩'].append(random.randint(40, 100))  # 成绩范围40-100分
    # 生成地址并清理格式
    address = f"{fake.province()}{fake.city_suffix()}{fake.district()}" \
              f"{fake.street_name()}{random.randint(1, 999)}号"
    data['住址'].append(address)

# 创建DataFrame
df = pd.DataFrame(data)

# 保存到CSV文件(使用utf-8-sig编码解决中文乱码问题)
df.to_csv('班级数据.csv', index=False, encoding='utf-8-sig')

安装方法

pip install pandas faker

代码结果

    姓名  年龄  年级  成绩              住址
0   王丹  17  初一  41   福建省市海港关岭街7601   王俊  14  初二  54   浙江省市长寿拉萨路1432   徐萍  17  初一  83    北京市市房山陈街7593  李春梅  16  初一  77   河北省县六枝特熊路4334  栾淑珍  12  初一  45  山西省县清浦石家庄街224

可以看到生成的虚拟名字是完全符合中文的名字逻辑的,姓名的排列都合乎规范,并且这个工具库还可以生成虚拟的住址,效果也很不错,可以具体到号。

如果感觉这个住址比较长,还可以将住址代码简化到省,如下(最后一行):


# 生成200条记录
for _ in range(200):
    data['姓名'].append(fake.name())
    data['年龄'].append(random.randint(12, 18))
    data['年级'].append(random.choice(['初一', '初二', '初三', '高一', '高二', '高三']))
    data['成绩'].append(random.randint(40, 100))
    data['住址'].append(fake.province())  # 直接获取省份/直辖市

   姓名  年龄  年级  成绩   住址
0  王丹  17  初一  41  福建省
1  李旭  17  初三  55  山西省
2  王俊  13  初二  87  浙江省
3  林杰  12  高三  87  山东省
4  刘萍  16  初一  77  北京市

这样生成的结果就要简化一些。
我的这个代码主要是生成一份班级数据,如果有其他需求可以自己进行修改,或者去问一下deepseek,如果代码有运行问题也欢迎大家在评论区留言告知我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值