如何通过python(itertools库)+pandas制造房源测试数据
如何通过python(itertools库)+pandas制造房源测试数据
场景一:我们在做房源开盘业务的时候,通常需要制造房源测试数据,供用户在线上进行选房,如果我们需要大批量的房源数据该如何制造数据呢?房源数据展示结果如下:
我们需要制造每栋楼里每个单元有多少层楼以及每层楼有多少个房间数,我们可以通过python+pandas制造房源数据:
方法1:常规写法
常规写法 嵌套了4个for循环,以此遍历每栋楼、每个单元、每层楼以及每层的房间数
import random
import pandas as pd
from faker import Faker
f = Faker(locale="zh_CN")
lists = []
for i in range(1, 5): #楼栋数
for j in range(1,4): #单元数
for m in range(1,3): #楼层数
for n in range(1,2): #房号数
floor_area=round(random.uniform(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),
"房源单价(*)": f.random_int(min=5000, max=15000),
"户型(*)": "三房两厅", "房源描述": "最为高端“天字系”代表作"}
lists.append(a)
df = pd.DataFrame(lists)
df.to_excel(r"D:\HuaweiMoveData\Users\28071\Desktop\云和+\测试数据_1.xlsx",index=None)```
常规写法比较繁琐且逻辑不是很清晰,我们可以使用itertools. product() 大大减少循环层级,如下代码:
方法2:
```python
import random
import pandas as pd
from itertools import product
from faker import Faker
f = Faker(locale="zh_CN")
lists_1 = range(1, 5)
lists_2 = range(1, 4)
lists_3 = range(1, 3)
lists_4 = range(1, 2)
s = []
for i, j, m, n in product(lists_1, lists_2, lists_3, lists_4):
floor_area = round(random.uniform(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),
"房源单价(*)": f.random_int(min=5000, max=15000),
"户型(*)": "三房两厅", "房源描述": "最为高端“天字系”代表作"}
s.append(a)
df = pd.DataFrame(s)
df.to_excel(r"D:\HuaweiMoveData\Users\28071\Desktop\云和+\测试数据.xlsx", index=None)```
将房源数据写入到Excel表效果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/a068141c56c5428d81c7216a4e814e14.png)
最后可以通过接口或后台直接将房源数据导入即可,效果如图一展示。
Histooooric: 解决了我的大问题 非常感谢