如标题,生成问卷数据的['序号', '提交答卷时间', '所用时间', '来源', '来源详情', '来自IP']
,有兴趣生成其他部分可参考:https://blog.csdn.net/qq_33254766/article/details/126469702
注意
:仅用于模拟生成问卷数据
如全随机生成数据,会导致问卷信效度不高,后期无法分析出有效结论等问题!!!
Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。
pip install faker
引用包:
import faker
初始化:
f=faker.Faker(locale='zh_CN')
关于初始化参数locale:为生成数据的文化选项,默认为en_US,只有使用了相关文化,才能生成相对应的随机信息(比如:名字,地址,邮编,城市,省份等)
直接 range 生成即可。
sheet.write(row, 0, row) # 序号
注意修改时间区间:randomtimes(‘2023/3/27 07:00:00’,‘2023/3/31 09:00:00’)
这里指的是,随机生成该区间的时间
import datetime,random
def randomtimes(start, end, frmt='%Y/%m/%d %H:%M:%S'):
stime = datetime.datetime.strptime(start, frmt)
etime = datetime.datetime.strptime(end, frmt)
time_datetime = random.random() * (etime - stime) + stime
time_str = time_datetime.strftime(frmt)
return time_str
randomtimes('2023/3/27 07:00:00','2023/3/31 09:00:00')
也可直接生成当前时间
time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(time.time()))
注意:为了更好的模拟生成问卷数据
建议先发放一系列的问卷,根据自己问卷的所用时间的最大最小值设定区间
如,这里用的是(80, 600),即最短80s,最长600s
import random
print(str(random.randint(80, 600)) + "秒")
直接微信、QQ即可
sheet.write(row, 3, random.choice(["微信", "QQ"])) # 所用时间
直接 N/A
sheet.write(row, 4, "N/A")
调用faker库,可以修改为指定区域的ip
from faker import Faker
faker = Faker("zh-CN")
template = "{ipv4}({province}-{city_name})"
for i in range(10):
r = template.format(ipv4=faker.ipv4(), province=faker.province(), city_name=faker.city_name())
print(r)
import time
import random
import xlwt
import faker
import datetime,random
# 参考:https://blog.csdn.net/qq_33254766/article/details/126469702
wb = xlwt.Workbook() # 新建一个 workbook 对象
sheet = wb.add_sheet('sheet')
def randomtimes(start, end, frmt='%Y/%m/%d %H:%M:%S'):
stime = datetime.datetime.strptime(start, frmt)
etime = datetime.datetime.strptime(end, frmt)
time_datetime = random.random() * (etime - stime) + stime
time_str = time_datetime.strftime(frmt)
return time_str
head_data = ['序号', '提交答卷时间', '所用时间', '来源', '来源详情', '来自IP']
for head in head_data:
sheet.write(0, head_data.index(head), head)
# sheet.write(行, 列, 写入数据)
faker = faker.Faker("zh-CN")
template = "{ipv4}({province}-{city_name})"
for row in range(1, 200):
sheet.write(row, 0, row) # 序号
sheet.write(row, 1, randomtimes('2023/3/27 07:00:00','2023/3/31 09:00:00')) # 提交答卷时间
sheet.write(row, 2, str(random.randint(100, 180)) + "秒") # 所用时间
sheet.write(row, 3, random.choice(["微信", "QQ"])) # 所用时间
sheet.write(row, 4, "N/A")
sheet.write(row, 5, template.format(ipv4=faker.ipv4(), province=faker.province(), city_name=faker.city_name()))
wb.save("demo200.xls")