前言:

因为博主所在的地方,需要每周整理全校的青年大学习数据,Excel操作本身不难,但是这种毫无意义的体力劳动做久了就会很无趣,刚好我想起来上学期接触过PythonPandas模块,想着能不能试一下,取代这种无意义的劳动。

所用工具:
Pycharm 3.8(Python也可以)
Excel
Pandas库
Xlwt库

主要流程:

每周老师会发1M左右大小的.csv文件下来。
1.需要筛选出每个院有多少人看了。
2.再把每个院的团员数量填进去。
3.(每个院看了的人数)/(每个院的团员人数)=每个院的参与率
4.最底行再统计总人数和总参与率
这里城镇对应了学院

这是最终要的表格形式,此图的团员数量是后期调试方便随便输入的。本身操作不难,但每周总是得花点时间才能做完。

代码操作

之前上网查资料时,很多博主提醒打开文件的编码模式一定得是gbk,但我第一次的文件只能用UTF-8打开,但之后也有得用gbk才能打开的文件,这算是我踩过坑,大家知道就好。

#首先导入模块
import pandas as pd
import xlwt#导入文件
data = pd.read_csv(r'C:\Users\ASUS\Desktop\第九季第十三期源数据.csv', encoding = "gbk",error_bad_lines=False) #导入文件 encoding = 'UTF-8'
#筛选“城镇”列
data_gender = data[[ '城镇']]
#删掉用不到的列
data_gender_re = data_gender[data_gender.notnull()] #删掉无用项

每周的团员数量都是在变化的,所以我决定用输入的方式来确定这个量

#这里定义了一个函数,用户输入每周的团员数量
def getdata():liebiao1 = []liebiao1.append(int(input("A院团员人数:")))liebiao1.append(int(input("B院团员人数:")))liebiao1.append(int(input("C院团员人数:")))liebiao1.append(int(input("D院团员人数:")))liebiao1.append(int(input("E院团员人数:")))liebiao1.append(int(input("F院团员人数:")))liebiao1.append(int(input("G院团员人数:")))liebiao1.append(int(input("H院团员人数:")))liebiao1.append(int(input("I院团员人数:")))liebiao1.append(int(input("J团员人数:")))liebiao1.append(int(input("K院团员人数:")))liebiao1.append(int(input("L院团员人数:")))liebiao1.append(int(input("M院团员人数:")))liebiao1.append(int(input("N院团员人数:")))liebiao1.append(int(input("O学院团员人数:")))liebiao1.append(int(input("P院团员人数:")))liebiao1.append(int(input("Q院团员人数:")))return liebiao1

对“城镇”列的数据进行筛选,,将收集的数据传递给a(字典类型)
例如:a1={A:34} ,其中A是学院名称,34是数量

def screendata():F1 = data_gender_re.loc[(data_gender_re['城镇'] == 'A学院团委')]F2 = data_gender_re.loc[(data_gender_re['城镇'] == 'B工程学院团委')]F3 = data_gender_re.loc[(data_gender_re['城镇'] == 'C学院团委')]F4 = data_gender_re.loc[(data_gender_re['城镇'] == 'D学院团委')]F5 = data_gender_re.loc[(data_gender_re['城镇'] == 'E学院团委')]F6 = data_gender_re.loc[(data_gender_re['城镇'] == 'F学院团委')]F7 = data_gender_re.loc[(data_gender_re['城镇'] == 'G学院团委')]F8 = data_gender_re.loc[(data_gender_re['城镇'] == 'H学院团委')]F9 = data_gender_re.loc[(data_gender_re['城镇'] == 'I学院团委')]F10 = data_gender_re.loc[(data_gender_re['城镇'] == 'J学院团委')]F11 = data_gender_re.loc[(data_gender_re['城镇'] == 'K学院团委')]F12 = data_gender_re.loc[(data_gender_re['城镇'] == 'L学院团委')]F13 = data_gender_re.loc[(data_gender_re['城镇'] == 'M学院团委')]F14 = data_gender_re.loc[(data_gender_re['城镇'] == 'N学院团委')]F15 = data_gender_re.loc[(data_gender_re['城镇'] == 'O学院团委')]F16 = data_gender_re.loc[(data_gender_re['城镇'] == 'P学院团委')]F17 = data_gender_re.loc[(data_gender_re['城镇'] == 'Q学院团委')]#将字典a的信息传递给列表b# Aa1 = dict(F1['城镇'].value_counts())b1 = [list(a1) + list(a1.values())]# Ba2 = dict(F2['城镇'].value_counts())b2 = [list(a2) + list(a2.values())]# Ca3 = dict(F3['城镇'].value_counts())b3 = [list(a3) + list(a3.values())]# Da4 = dict(F4['城镇'].value_counts())b4 = [list(a4) + list(a4.values())]# Ea5 = dict(F5['城镇'].value_counts())b5 = [list(a5) + list(a5.values())]# Fa6 = dict(F6['城镇'].value_counts())b6 = [list(a6) + list(a6.values())]# Ga7 = dict(F7['城镇'].value_counts())b7 = [list(a7) + list(a7.values())]# Ha8 = dict(F8['城镇'].value_counts())b8 = [list(a8) + list(a8.values())]# Ia9 = dict(F9['城镇'].value_counts())b9 = [list(a9) + list(a9.values())]# Ja10 = dict(F10['城镇'].value_counts())b10 = [list(a10) + list(a10.values())]# Ka11 = dict(F11['城镇'].value_counts())b11 = [list(a11) + list(a11.values())]# La12 = dict(F12['城镇'].value_counts())b12 = [list(a12) + list(a12.values())]# Ma13 = dict(F13['城镇'].value_counts())b13 = [list(a13) + list(a13.values())]# Na14 = dict(F14['城镇'].value_counts())b14 = [list(a14) + list(a14.values())]# Oa15 = dict(F15['城镇'].value_counts())b15 = [list(a15) + list(a15.values())]# Pa16 = dict(F16['城镇'].value_counts())b16 = [list(a16) + list(a16.values())]# Qa17 = dict(F17['城镇'].value_counts())b17 = [list(a17) + list(a17.values())]#将列表b合并,此时data1是二维列表data1 = b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9 + b10 + b11 + b12 + b13 + b14 + b15 + b16 + b17data2 = b1[0][1] + b2[0][1] + b3 [0][1] + b4 [0][1] + b5 [0][1] + b6 [0][1] + b7 [0][1] + b8 [0][1] + b9 [0][1] + b10 [0][1] + b11 [0][1] + b12 [0][1] + b13 [0][1] + b14 [0][1] + b15 [0][1] + b16 [0][1] + b17 [0][1]#下面俩是上面表格中的最底下两行,不参与计数,以要求的形式存在data1.append([])data1.append(['总计',data2])return data1

执行函数,将getdata返回的值给disanlie(第三列)

screendata()disanlie = getdata()

将两个列表合并在一起(列与列的合并)

screendata1 = [list(screendata()[i]) + [disanlie[i]] for i in range(len(screendata())-2)]

计算出每个学院的参与率disilie(第四列,这里老师要求是百分比,且保留小数点后一位,后面会讲到)

disilie = []
for i in range(17):disilie.append((float(screendata1[i][1])/(screendata1[i][2])))

将参与率disilie与上面整理的总表格合并(也是列与列的合并)

screendata2 = [list(screendata1[i]) + [disilie[i]] for i in range(len(screendata1))]

表格里的最后一行:参与人数总和、团员人数总和、总参与比,这里没什么好说的,注意数据别带错,简单的运算

canyurenshu = 0;tuanyuanrenshu = 0
for i in range(17):canyurenshu = screendata2[i][1] + canyurenshutuanyuanrenshu = screendata2[i][2] + tuanyuanrenshu
canyubi1 = (canyurenshu / tuanyuanrenshu)
float(canyubi1)
#老师要求总参与比为百分比,且小数点后两位(百分比后面再处理)
canyubi = ("%.2f%%"  %(canyubi1*100))

表格中倒数第二行是空的,所以准备一个空列表,并将之前算好的数据全装进第二个列表。

zongjie1 = []
zongjie2 = ['总计',canyurenshu,tuanyuanrenshu,canyubi]

然后将上面准备好的最底两行与总表格合并

screendata2.append(zongjie1)
screendata2.append(zongjie2)

老师还要求(我内心其实是崩溃的~)学院按参与率由高到低排序,我这里采用了sorted函数,用key关键字进行排序,非常方便

screendata3=[]
for i in range(17):screendata3.append(screendata2[i])screendata4 = sorted(screendata3,key=lambda x: x[3],reverse=True)#这里将学院的参与率由float型转为小数点后一位的百分比
for i in range(17):screendata4[i][3] = str("%.1f" % (screendata4[i][3]*100)) + '%'screendata4.append(zongjie1)
screendata4.append(zongjie2)

最后生成Excel文件,大功告成

#pd.DataFrame(列表,每一列的列头)
df = pd.DataFrame(screendata4, columns=['学院','参与人数','团员人数','参与比'])df.to_excel(r'C:\Users\ASUS\Desktop\导出文件.xls',index=False,encoding = 'UTF-8')

第一次写这么长的博客,写的不好,代码太乱也没有整理,将就看着,下面写下一些我遇到的坑。

1.到后面已经可以生成文件了,如果Excel还开着,就Run程序,这个肯定会报错
2.编码问题,有些时候UTF-8才能运行,有时候gbk才能运行,不过基本上都是gbk才能运行
3.列表的行数、列数,思考调试列表的位置把我弄傻了都…
4.pd.DataFrame函数的columns是以一个列表的形式出现。你传入的列表数有n列,那么columns列表的元素就不能超过n
5.如果你保存的是.csv格式,那么你的小数点后一位的百分比格式,生成为.csv的时候,会自动给你多保留一位小数点,于是乎我才选择导入xlwt模块生成Excel文件

目前就想到这么多,欢迎补充~

【Python】对Excel数据进行批量操作相关推荐

  1. python读取excelsheet-一文看懂用Python读取Excel数据

    原标题:一文看懂用Python读取Excel数据 导读:现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上). Python处理Excel文件主要 ...

  2. python处理excel教程实例-python如何处理excel数据

    python处理excel数据的方法:1.使用xlrd来处理:2.使用[xlutils+xlrd]来处理:3.使用xlwt来处理:4.使用pyExcelerator来处理:5.使用Pandas库来处理 ...

  3. python导入excel数据-Python数据处理之导入导出excel数据

    欢迎点击上方"AntDream"关注我 .Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理Excel数据的情况.这里做一个Python处理Excel数据的总结, ...

  4. python将EXCEL数据导入数据库时日期型数据变成数字并加.0的问题一行代码解决方案方案

    [问题描述]:python将EXCEL数据导入数据库时日期变成文本型数据并显示为数字格式 [解决方案] 数据源: codes: #!/usr/bin/python3 -- coding: utf-8 ...

  5. python读取excel送到网页_python怎么读取excel!怎么用python将excel数据写入网页中

    怎么用python将excel数据写入网页中 # 装 xlrd-0.9.2 xlutils-1.7.1 这两个模 from xlwt import Workbook, Formula import x ...

  6. python接入excel_使用python将excel数据导入数据库过程详解

    因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接丢代码,使用python3,注释比较清楚. ...

  7. python对Excel数据进行读写操作

    python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...

  8. 用python处理excel表格_如何用python处理excel数据 | 用python处理excel表格数据类型

    python 读取EXCEL文件中的数据格式 扩展库 xlrd 读excle xlwt 写excle 直上搜就能下载 下载后使用 import xlrd 就可以读excle了 打开文件: xls = ...

  9. Python进行Excel数据统计

    Python进行Excel数据统计 前言 示例数据 前期思路 实操 遇到的问题和解决方案 最终结果 实现代码 总结 前言 貌似大家中使用到Excel数据统计和处理比较多.前两天GF发来指示,帮忙统计2 ...

  10. 《用 Python 处理 Excel 数据之正则表达式视频教程》 曾贤志

    第1章 正则表达式常用函数与方法使用 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查 一个串是否含有某种子串.对匹配成功的字符串进行提取. ...

最新文章

  1. 崛起的Python,真的影响了76万人?
  2. 征信上显示保险代偿记录,那你的信用基本就黑了
  3. 字符串匹配算法(BM)
  4. 生产性企业CO部分月结流程及系统步骤
  5. Nginx的这些妙用,你肯定有不知道的!
  6. 3d激光雷达开发(法向量预测)
  7. python filter函数_第九篇:Python中lambda、filter和map函数
  8. 在使用pydelicious时出现HTTP Error 500: Internal Server Error的错误的解决方法:
  9. 计算机启动过程过程图,计算机启动过程图文详解(一)----计算机初始化启动过程...
  10. Atitit 项目管理之时间管理之道 attilax著 艾龙 著 1. 项目活动的分解和定义 1 2. 第2章|项目活动定义与活动排序 13 1 3. 项目活动资源需求估计 2 4. 里程碑节点 2
  11. [CQOI 2018]社交网络
  12. unicode转gbk python_使用python实现GBK转unicode码查询表
  13. webstorm设置黑色背景
  14. DOS命令:diskpart
  15. Classic界面chatter中的子选项卡配置
  16. 爬取热榜数据,通过Qt界面显示,代码可直接运行(python3经典编程案例)
  17. 渗透测试流程 - 渗透测试的9个步骤
  18. 织梦dede文章列表调用标签的用法和规则
  19. 如何处理图片用matlab,如何使用matlab来批处理文件图片格式
  20. 阿里巴巴内推一面过程

热门文章

  1. 《乐高EV3机器人搭建与编程》——1.2 LEGO系列产品
  2. 设计模式10-责任链模式
  3. Picsew | 推荐一款长截图和长图拼接工具
  4. Feko仿真偶极子天线学习笔记
  5. 一文掌握FastDeploy Serving服务化部署(打造线上证件照制作系统,含完整代码)
  6. 重新装载oracle数据库
  7. CodeBlock 基本使用 与 设置断点和单步调试方法 与生活标准普尔图
  8. 实收资本和注册资本\营业执照和法人营业执照的区别
  9. 医学论文笔记:TMI2021 SMU-Net: Saliency-Guided Morphology-Aware U-Net for Breast Lesion Segmentation ...
  10. creator 求两个点的向量长度mag