pandas处理问卷多选题【循环遍历】python

业务需求,社科调查问卷有一列是多选项
如图
pandas处理问卷多选题【循环遍历】python_第1张图片

代码分割,这里是换行符(\n)
pandas处理问卷多选题【循环遍历】python_第2张图片
统计各值比例

list=[x for x in df1['37. 您当前最关注且迫切需要解决的问题有 [多选题]'].str.split('\n')]

shcbss=0  # 生活成本上升
kbnkbg=0   # 看病难,看病贵
gzbwd=0   # 工作不稳定,可能下岗失业
jsgbs=0  # 当前技术技能水平跟不上企业转型发展需求
lrsy=0   # 老人赡养问题
zfwt=0   # 住房问题
ylbz=0    # 养老保障
znjy=0    # 子女教育
qita=[]
for i in list:
    if len(i)==1:
        if '生活成本上升'in i:
            shcbss+=1
        elif '看病难,看病贵'in i:
            kbnkbg+=1
        elif '工作不稳定,可能下岗失业' in i:
            gzbwd+=1
        elif '当前技术技能水平跟不上企业转型发展需求' in i:
            jsgbs+=1
        elif '老人赡养问题' in i:
            lrsy+=1
        elif '住房问题' in i:
            zfwt+=1
        elif '养老保障' in i:
            ylbz+=1
        elif '子女教育' in i:
            znjy+=1
        else:
            qita.append(i)
    if len(i) !=1:
        for a in i:
            if '生活成本上升'in a:
                shcbss+=1
            elif '看病难,看病贵'in a:
                kbnkbg+=1
            elif '工作不稳定,可能下岗失业' in a:
                gzbwd+=1
            elif '当前技术技能水平跟不上企业转型发展需求' in a:
                jsgbs+=1
            elif '老人赡养问题' in a:
                lrsy+=1
            elif '住房问题' in a:
                zfwt+=1
            elif '养老保障' in a:
                ylbz+=1
            elif '子女教育' in a:
                znjy+=1
            else:
                qita.append(a)
print('生活成本上升',shcbss,'比例: {:.2%}'.format(shcbss/11840))
print('看病难,看病贵',kbnkbg,'比例: {:.2%}'.format(kbnkbg/11840))
print('工作不稳定,可能下岗失业',gzbwd,'比例: {:.2%}'.format(gzbwd/11840))
print('当前技术技能水平跟不上企业转型发展需求',jsgbs,'比例: {:.2%}'.format(jsgbs/11840))
print('老人赡养问题',lrsy,'比例: {:.2%}'.format(lrsy/11840))
print('住房问题',zfwt,'比例: {:.2%}'.format(zfwt/11840))
print('养老保障',ylbz,'比例: {:.2%}'.format(ylbz/11840))
print('子女教育',znjy,'比例: {:.2%}'.format(znjy/11840))
print('-------------------------------------------------------')
print('其他',qita)

这里除以11840是因为该问卷一共有11840份记录
pandas处理问卷多选题【循环遍历】python_第3张图片

你可能感兴趣的:(Python奇技淫巧,python,pandas,开发语言)