日常生活中面对的问卷,有询问对于某些产品的倾向(例如,喜欢哪种零食,薯片,可乐,薯条之类)可以多选的选项,虽然问卷导出数据时可以将各个选项的值,进行可视化展示,但是不能具体展示,单项(例如,喜欢薯条(只要选上薯条就可以))的人数。
下面将使用pandas将问卷导出的excel中,将单项数据进行统计,并将选项中所有被选的选项按照单项的形式,用列表输出,以及用字典形式展示,各个单项出现的频率,最终将统计的频率信息保存到excel中
#读取问卷内容
import pandas as pd
want=pd.read_excel(r'问卷导出的excel的路径')
#展示读取的问卷的前五行信息,差看是否,导入成功
print(want.head(5))
#得到pd内容的标题,对于问卷来说,一般是题目的标题
print(want.columns.values)
#第四列,直接统计单个词
#直接生成列表
#将列表中的数据进行统计
num_4=list(want['想要统计的列名称'])
dict_4={}
list_4=[]
str_0=''
titleaa1='最终保存到Excel时想要的sheet的名称'
for i in num_4:
#print('i',i)
a=len(i)
for j in range(len(i)):
#print('i[j]',i[j])
#因为问卷中,多选时各个选项是按照'┋'进行隔开的
if i[j] != '┋':
str_0+=i[j]
if i[j]=='┋':
#print('str_0',str_0)
list_4.append(str_0)
str_0=''
if j==a-1:
#print('j',j)
#print("a",a)
#print('str_0',str_0)
list_4.append(str_0)
str_0=''
str_0=''
print("生成的列表是:",list_4)
#对于列表中的每一个数据
#如果它在问卷中,出现过
#字典中,这个词出现的次数加一
for i in list_4:
for j in num_4:
if i in j:
if i not in dict_4.keys():
dict_4[i]=1
else:
dict_4[i]+=1
print('生成的字典是:',dict_4)
df1=pd.DataFrame(list(dict_4.items()),columns=['想要命名的列名1', '想要命名的列名2'])
with pd.ExcelWriter(R"想要将统计的信息保存到Excel的路径") as writer:
df1.to_excel(writer,sheet_name=titleaa1,index=False)
print("Done!!!")