目录
一、背景
草料二维码能够比较方便地进行发放问卷、调查、投票等。但是,对统计后的数据缺乏自动统计功能。导出xlsx或csv文件后,手工统计票数太慢。因此,利用pandas等包对文件自动统计并显示,能降低工作量。为了方便使用,将其打包为exe文件。具体如下。
二、代码
我们的草料二维码导出的xlsx文件如下图所示,目标是统计出列名为候选人投票下的内容中每个人的票数。
python代码如下
import pandas as pd
from collections import Counter
# 获取用户输入的姓名并打印
path = input("请输入文件名,如 数据汇总_20231011.xlsx :") #如果与py文件不在同一目录,需要将路径写上,如 C:\Users\Administrator\Desktop\数据汇总_20231011.xlsx
cname = input("请输入列名,如 候选人投票 :")
data = pd.read_excel(path, usecols=[cname])
def print_res(res, col=5): #横向显示
w = max(7, max(len(i[0]) for i in res))
i = 0
for k,v in res:
print(f"{k:{chr(12288)}>{w}}: {v:>3}票", end=" ")
i = (i+1)%col
if i == 0:
print("")
def print_res1(res, row=5): #纵向显示
w = max(7, max(len(i[0]) for i in res))
for i in range(row):
for k,v in res[i::row]:
print(f"{k:{chr(12288)}>{w}}: {v:>3}票", end=" ")
print()
hxr = []
for i in data[cname].values.tolist():
if not pd.isna(i):
hxr.extend(i.split(',')) #将内容分割。每个名字之间是用“,”分隔的,可根据需要修改
res = sorted(Counter(hxr).items(), key=lambda kv:kv[1], reverse=True)
print_res(res)
print('\n')
print_res1(res)
input() #防止退出
运行结果如下:
三、pyinstaller快速打包
为了方便使用,在conda环境中创建虚拟的干净的环境打包,具体步骤如下:
①安装包
pip install pipenv
②进入虚拟环境
pipenv shell
③安装pyinstaller以及所必要的库,注意使用pipenv
pipenv install pyinstaller
pipenv install pandas
④打包python文件1.py
pyinstaller 1.py
编译成功后,exe文件在如下文件夹中。使用时需要把dist内的文件带着一起,不能删掉。
四、运行结果
使用时需要把xlsx文件放到exe文件同一目录,否则需要把路径也写上,不然会闪退。
五、代码数据下载
链接:https://pan.baidu.com/s/1k0EIaIV8trEVqHwJjr2rKg?pwd=Luck
提取码:Luck
下载二维码: