业务场景:
我们通常会制造测试数据保存到excel表格里,然后将excel表格里的数据进行导入后后台系统,预期结果如下:
第一种方式:
import random
import pandas as pd
from faker import Faker
f = Faker(locale='zh_CN') #生成一个faker对象,专门用于制造测试数据
lists = []
for i in range(1, 10): #循环每一栋楼
for j in range(1,4): #每一栋楼下循环每个单元
for m in range(1,4):#每一个单元循环每个楼层数
for n in range(1,5):#每一层楼有多少个房间号
floor_area=round(random.uniform(100, 250),2) #建筑面积100-250,保留2位小数
a = {"楼栋(*)": str(i), "单元(*)": str(j), "楼层(*)": str(m), "房号(*)": str(m) + "0" + str(+n),
"房源总价(*)": f.random_int(min=1000000, max=9999999),
"建筑面积(*)": floor_area,
"套内面积(*)": round(floor_area-30),#套内面积=建筑面积-30进行四舍五入
"房源单价(*)": f.random_int(min=5000, max=15000),
"户型(*)": "三房两厅", "房源描述": "南北通透,央企好房"}
lists.append(a) #生成的每一行数据存放到列表里
df = pd.DataFrame(lists)#通过pandas将数据写入到excel表
df.to_excel(r"C:\Users\28071\Desktop\在线开盘\新增房源.xlsx",index=None)
第二种方式:采取列表生成式
import random
import pandas as pd
from faker import Faker
f = Faker(locale='zh_CN')
a = [{"楼栋(*)": str(i), "单元(*)": str(j), "楼层(*)": str(m), "房号(*)": str(m)+"00"+str(+n),
"房源总价(*)": f.random_int(min=1000000, max=9999999),
"建筑面积(*)": f.pyfloat(left_digits=3, right_digits=2, positive=True),
"套内面积(*)": f.pyfloat(left_digits=3, right_digits=2, positive=True)-50,
"房源单价(*)": f.random_int(min=10000, max=99999),
"户型(*)": "三房两厅", "房源描述": "南北通透"}
for i in range(1, 6) for j in range(1, 6) for m in range(1,6) for n in range(1,6)]
df = pd.DataFrame(a)
df.to_excel(r"C:\Users\28071\Desktop\在线开盘\1.xlsx",index=False)