模拟生成问卷数据

写在最前面

如标题,生成问卷数据的['序号', '提交答卷时间', '所用时间', '来源', '来源详情', '来自IP'],有兴趣生成其他部分可参考:https://blog.csdn.net/qq_33254766/article/details/126469702

注意:仅用于模拟生成问卷数据
如全随机生成数据,会导致问卷信效度不高,后期无法分析出有效结论等问题!!!

所用库Faker(生成随机数据)

Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。

安装Faker

pip install faker

Faker的使用

引用包:

import faker

初始化:

f=faker.Faker(locale='zh_CN')

关于初始化参数locale:为生成数据的文化选项,默认为en_US,只有使用了相关文化,才能生成相对应的随机信息(比如:名字,地址,邮编,城市,省份等)

生成问卷调查excel样式

在这里插入图片描述

序号

直接 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")

来自 IP

调用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")

猜你喜欢

转载自blog.csdn.net/wtyuong/article/details/129871450
今日推荐