import pandas as pd
import random
from random import choices, sample, randint
base_params = {
'性别': {'选项': ['男', '女'], '权重': [4, 6]},
'教龄': {'选项': ['3年以下', '3-5年', '5-10年', '10年以上'], '权重': [15, 35, 35, 15]},
'学历': {'选项': ['大专及以下', '本科', '硕士及以上'], '权重': [10, 70, 20]},
'执教年级': {'选项': ['三年级', '四年级', '三、四年级'], '权重': [40, 40, 20]},
}
multi_choice = {
'设计依据': {'选项': ['A', 'B', 'C', 'D', 'E'], 'max_choices': 3},
'任务时间依据': {'选项': ['A', 'B', 'C', 'D'], 'max_choices': 2},
'教学环节': {'选项': ['A', 'B', 'C', 'D'], 'max_choices': 3},
'模块领域': {'选项': ['A', 'B', 'C', 'D'], 'max_choices': 2},
'具体方法': {'选项': ['A', 'B', 'C', 'D', 'E', 'F'], 'max_choices': 3},
'分组原则': {'选项': ['A', 'B', 'C', 'D', 'E', 'F'], 'max_choices': 3},
'小组人数依据': {'选项': ['A', 'B', 'C', 'D', 'E'], 'max_choices': 2},
'指导方式': {'选项': ['A', 'B', 'C', 'D'], 'max_choices': 3},
'成果展示方式': {'选项': ['A', 'B', 'C', 'D', 'E'], 'max_choices': 2},
'展示内容': {'选项': ['A', 'B', 'C', 'D'], 'max_choices': 2},
'教师角色': {'选项': ['A', 'B', 'C', 'D'], 'max_choices': 3},
'评价方法': {'选项': ['A', 'B', 'C', 'D', 'E', 'F'], 'max_choices': 3},
}
def generate_multi_choice(options, max_choices):
"""生成多选题答案"""
n = random.randint(1, max_choices)
return ';'.join(sorted(sample(options, n)))
def generate_row():
"""生成单行数据"""
row = {}
for field in base_params:
param = base_params[field]
row[field] = choices(param['选项'], weights=param['权重'])[0]
if row['教龄'] in ['5-10年', '10年以上']:
freq = choices(['每节课', '每周一次', '每月一次'], weights=[40, 40, 20])[0]
else:
freq = choices(['每周一次', '每月一次', '不定期'], weights=[30, 40, 30])[0]
row['使用频率'] = freq
for field in multi_choice:
config = multi_choice[field]
row[field] = generate_multi_choice(config['选项'], config['max_choices'])
if row['使用频率'] == '每节课':
row['教学环节'] = ';'.join(sorted(['B', 'C']))
row['具体方法'] = ';'.join(sorted(['A', 'B', 'C']))
return row
data = [generate_row() for _ in range(100)]
columns = [
'性别', '教龄', '学历', '执教年级', '使用频率',
'设计依据', '任务时间依据', '教学环节', '模块领域', '具体方法',
'选择理由', '分组原则', '小组人数依据', '任务分配方式',
'指导方式', '成果展示方式', '展示内容', '教师角色',
'关键因素', '评价方法'
]
df = pd.DataFrame(data, columns=columns)
df.to_excel("survey_data.xlsx", index=False)
print("数据已生成到 survey_data.xlsx")