Bootstrap

Python实例:faker生成数据集、文件

原文链接:http://www.juzicode.com/python-example-faker-create-data

本文的几个例子用faker生成数据并用openpyxl生成表格,或者生成csv、xml、图像文件。

A)生成个人数据

#juzicode.com/VX公众号:juzicode
from openpyxl import Workbook
from faker import Faker
from tqdm   import tqdm 

N = 500 # 生成数据条数

# 初始化
fake = Faker('zh_CN')
wb = Workbook() 
ws = wb.active  

# 添加表头
p = fake.profile()  
print(p.keys())
ws.append(list(p.keys()))

# 生成个人数据
for i in tqdm(range(N)):  # 添加N行数据
    p=fake.profile()
    p['current_location'] = str(p['current_location'])  # excel不识别的数据类型转换为字符串
    p['website'] = str(p['website'])
    ws.append(list(p.values()))  # 添加数据

# 保存表格  
wb.save('faker-profile-openpyxl.xlsx')        

B)生成internet数据

#juzicode.com/VX公众号:juzicode
from openpyxl import Workbook
from faker import Faker
from tqdm   import tqdm 

N = 500 # 生成数据条数

# 初始化
fake = Faker('zh_CN')
wb = Workbook() 
ws = wb.active  

# 添加表头 
ws.append(('name','email','domain','ipv4','ipv6','mac_address','url','port_number','','','','','',))

# 生成个人数据
for i in tqdm(range(N)):  # 添加N行数据
    name = fake.name()
    email=fake.ascii_email() 
    domain=fake.domain_name()    
    ipv4=fake.ipv4()    
    ipv6=fake.ipv6()    
    mac_address=fake.mac_address()    
    url=fake.url()
    port_number=fake.port_number()        
    ws.append((name,email,domain,ipv4,ipv6,mac_address,url,port_number,))  # 添加数据

# 保存表格  
wb.save('faker-internet-openpyxl.xlsx')        

C)生成财务数据

#juzicode.com/VX公众号:juzicode
from openpyxl import Workbook
from faker import Faker
from tqdm   import tqdm 

N = 500 # 生成数据条数

# 初始化
fake = Faker('zh_CN')
wb = Workbook() 
ws = wb.active  

# 添加表头 
ws.append(('name','currency_code','currency_name','currency_symbol','credit_card_number','credit_card_provider','credit_card_security_code','phone_number','','','','','','',))

# 生成个人数据
for i in tqdm(range(N)):  # 添加N行数据
    name=fake.name()        
    currency_code,currency_name = fake.currency()
    currency_symbol=fake.currency_symbol() 
    credit_card_number=fake.credit_card_number()    
    credit_card_provider=fake.credit_card_provider()    
    credit_card_security_code=fake.credit_card_security_code()    
    phone_number=fake.phone_number()
    ws.append((name,currency_code,currency_name,currency_symbol,credit_card_number,
                credit_card_provider,credit_card_security_code,phone_number,))  # 添加数据

# 保存表格  
wb.save('faker-fanance-openpyxl.xlsx')        

D)生成csv文件

#juzicode.com/VX公众号:juzicode
from faker import Faker
from tqdm   import tqdm 
import os

N = 50 # 生成数据条数

# 初始化
fake = Faker('zh_CN') 
dir = 'faker-csv\\'  # 如果目录为空,创建
if not os.path.exists(dir):
    os.makedirs(dir)
    
# 生成数据和写入文件
for i in tqdm(range(N)):  # 生成n个文件
    x = fake.csv(header=('Name', 'Address', 'Favorite Color'), 
                data_columns=('{{name}}', '{{address}}', '{{safe_color_name}}'), 
                num_rows=100, 
                include_row_ids=True)
    with open(dir+'%05d.csv'%i,'w') as pf:  # 写入文件
        pf.writelines(x.split('\r'))  # 字符串带\r\n,直接按照字符串写入会导致空行

E)生成xml文件

#juzicode.com/VX公众号:juzicode
from faker import Faker
from tqdm   import tqdm 
import os

N = 50 # 生成数据条数

# 初始化
fake = Faker() 
dir = 'faker-xml\\'  
if not os.path.exists(dir): # 如果目录为空,创建
    os.makedirs(dir)
    
# 生成数据,写入文件
for i in tqdm(range(N)):  # 添加N行数据
    x = fake.xml()
    print(x)
    with open(dir+'%05d.xml'%i,'w') as pf: # 写入文件
        pf.write(x)  # 

F)生成图像文件

#juzicode.com/VX公众号:juzicode
from faker import Faker
from tqdm   import tqdm 
import os

N = 50 # 生成数据条数

# 初始化
fake = Faker() 
dir = 'faker-image\\'  
if not os.path.exists(dir): # 如果目录为空,创建
    os.makedirs(dir)
    
# 生成数据,写入文件
for i in tqdm(range(N)):  # 添加N行数据
    x = fake.image(size=(512,256),image_format='png')
    with open(dir+'%05d.png'%i,'wb') as pf: # 写入文件
        pf.write(x)  # 

扩展阅读:

  1. Python轮子:造假高手——faker(数据生成器)
;