用python批量统计Excel中的内容

目录

  • 问题背景
  • 思路
  • 代码
  • 遇到的问题
    • 1
    • 2

问题背景

需要从excel表中统计调查问卷,如下图,需要统计每一个因素的频数。
用python批量统计Excel中的内容_第1张图片
这个表有好几千行呐,作为新时代中国特色社会主义思想的传承者,肯定不能用数的吧。最开始是想用Excel中的查找功能的,但有好几个这个表呢,不便于批量操作,就想着锻炼一下python。

思路

先用pandas提取某一列问题及其回答,统计每一个影响因素出现的频数。采用双重遍历,先遍历所有的影响因素,然后遍历所有的回答,判断回答中出现的因素,每出现一个因素就累加一次。
比如,先遍历第一个影响因素,外面吵、有噪音时关,再遍历第一个回答外面吵、有噪音时关┋出门离家时关┋外面天气不好(刮风、下雨、沙尘)时关┋室外有雾霾时关┋回南天时关 出现了外面吵、有噪音时关,那么就加一。

因为只需要统计几个问题,提取问题 的代码就手动整理好了。

代码

import pandas as pd
import re

path = r'C:\Users\hao\Desktop\两广-327份数据-有选项.xlsx'
df = pd.read_excel(path, sheet_name='Sheet1')
print(df)

#导入问题项 关窗
Closewindows = df['19、以下哪种情况,您通常会选择关窗:']
print(Closewindows)
print(len(Closewindows),type(Closewindows))
print('-----------------------------------------------------------------')

#提取所有的互斥因素,
Closefactors = []
for i in Closewindows:
    i_splited = i.split('┋')
    #print(i_splited)
    for j in i_splited:
        if j not in Closefactors:
            Closefactors.append(j)
print(Closefactors, type(Closefactors))
print('-----------------------------------------------------------------')

#依次遍历所有的回答,并统计不同因素的次数   
for Closefactor in Closefactors:
    counter = 0
    for i in Closewindows:
        #print(i)
        if  (not re.search(Closefactor, i) == None):
            counter += 1
            #print('{}:%d次'.format(Closefactor)%counter)
    print('{}:%d次'.format(Closefactor)%counter)
print('-----------------------------------------------------------------')

遇到的问题

1

最开始的双重遍历是先遍历回答,再遍历因素,理论上也可以实现,但是出现了一个问题,上一个回答的统计结果不知道如何存储,在遍历下一个回答的时候,就会覆盖counter。
一种解决思路是 给每一种影响因素重新新建一个列表,如外面吵=[],有雾霾=[]等,最后统计每个影响因素列表的长度len()就好了。但我觉得好麻烦,而且统计下一个问题的时候,影响因素又得重新命名变量。适用性不够。

后来感觉还是先遍历因素,再遍历回答吧~因为最终需要统计的是因素出现的频数嘛,不会被覆盖

2

如何将列表中的字符串元素改成变量?
eval

你可能感兴趣的:(案例总结)