昨天在实验室闲着无聊,看见我旦今年的转专业名单放了出来。突发奇想想用Python试着分析一下转专业的情况。说干就干。

首先得用到处理excel文件的库,常用的是xlwt, xlrd, openpyxl。xlwt和xlrd是相对较老的版本,分别对应写入和读取,openpyxl则同时支持写入和读取。

首先安装三个包

$ pip3 install xlwt$ pip3 install xlrd$ pip3 install openpyxl

接下来直接贴代码

利用xlrd, xlwt的代码

import xlrdimport xlwtFAILED = ["生物科学", "生态学", "环境科学", "化学", "应用化学", "材料化学", "材料物理", "电子科学与技术"]def open_excel(file): try: data = xlrd.open_workbook(file) return data except Exception as e: print(e)def process(file): data = open_excel(file) table = data.sheets()[0] # Get the first sheert nrows = table.nrows # number of rows ncols = table.ncols # number of cols out_major_dict = {} # record "转出专业" in_major_dict = {} # record "转入专业" failed = {} # 失败专业 failed.setdefault("转出", 0) failed.setdefault("转入", 0) for row in range(1, nrows): if table.row_values(row)[3] == "转出专业": # exclude head rows continue out_major = table.row_values(row)[3] # 转出专业 in_major = table.row_values(row)[4] # 转入专业 if out_major in out_major_dict: out_major_dict[out_major] += 1 else: out_major_dict.setdefault(out_major, 1) if in_major in in_major_dict: in_major_dict[in_major] += 1 else: in_major_dict.setdefault(in_major, 1) if out_major in FAILED: failed["转出"] += 1 if in_major in FAILED: failed["转入"] += 1 print("*" * 20, "转出专业情况", "*" * 20) for key, value in sorted(out_major_dict.items(), key=lambda item: item[1], reverse=True): print("{0}: {1}".format(key, value)) print("*" * 20, "转入专业情况", "*" * 20) for key,value in sorted(in_major_dict.items(), key=lambda item: item[1], reverse=True): print("{0}: {1}".format(key, value)) print("*" * 20, "失败专业情况", "*" * 20) for key in failed.keys(): print("{0}: {1}".format(key, failed[key]))

利用openpyxl的代码

from openpyxl import load_workbookfrom openpyxl import WorkbookFAILED = ["生物科学", "生态学", "环境科学", "化学", "应用化学", "材料化学", "材料物理", "电子科学与技术"]def open_excel(file): try: wb = load_workbook(file) ws = wb.get_active_sheet() content = [] for row in ws.rows: line = [cell.value for cell in row] content.append(line) return content except Exception as e: print(e)def process(file): content = open_excel(file) out_major_dict = {} # record "转出专业" in_major_dict = {} # record "转入专业" failed = {} # 失败专业 failed.setdefault("转出", 0) failed.setdefault("转入", 0) for line in content: if line[3] == "转出专业": # exclude head rows continue out_major = line[3] # 转出专业 in_major = line[4] # 转入专业 if out_major in out_major_dict: out_major_dict[out_major] += 1 else: out_major_dict.setdefault(out_major, 1) if in_major in in_major_dict: in_major_dict[in_major] += 1 else: in_major_dict.setdefault(in_major, 1) if out_major in FAILED: failed["转出"] += 1 if in_major in FAILED: failed["转入"] += 1 print("*" * 20, "转出专业情况", "*" * 20) for key, value in sorted(out_major_dict.items(), key=lambda item: item[1], reverse=True): print("{0}: {1}".format(key, value)) print("*" * 20, "转入专业情况", "*" * 20) for key,value in sorted(in_major_dict.items(), key=lambda item: item[1], reverse=True): print("{0}: {1}".format(key, value)) print("*" * 20, "失败专业情况", "*" * 20) for key in failed.keys(): print("{0}: {1}".format(key, failed[key])) return out_major_dict, in_major_dict, faileddef write(filename="output_2018", sheetname="2018", sheetnumber=1, *content_dict): wb = Workbook() ws = wb.get_active_sheet() ws.title = sheetname row = 1 col = 1 for dct in content_dict: for key, value in sorted(dct.items(), key=lambda item: item[1], reverse=True): ws.cell(row, col).value = key ws.cell(row, col+1).value = value row += 1 wb.save(filename=filename)

分析结果

无需赘言,数据说明一切。

写在最后

前几天有私信小编要Python的学习资料,小编整理了一些有深度的Python教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习Python的同学可以下载学习学习。文件下载方式:点击小编头像,关注后私信回复“资料”即可下载。首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。“编程是门手艺活”。什么意思?得练啊。

python专科就业_利用Python分析复旦大学近五年转专业失败的情况相关推荐

  1. python 词云_利用Python生成词云

    利用Python生成词云 一.第三方库的安装与介绍 1.1  Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...

  2. python计算信息增益_利用Python提取ABAQUS的计算结果(ODB)信息、体积、应变等变化(一)...

    00 实例模型 一个金属长方体,我们需要对其做拉伸的加载约束示意图如图1,并在完成后采用Python命令流读取参考点的位移.体积.应变随加载时间的变化情况. 图1 金属长方体约束加载示意图 01 Py ...

  3. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

  4. python抽奖游戏_利用Python写一个抽奖程序,解密游戏内抽奖的秘密

    原标题:利用Python写一个抽奖程序,解密游戏内抽奖的秘密 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 极客 ...

  5. python扫雷脚本_利用 Python 实现 自动扫雷 小脚本

    原标题:利用 Python 实现 自动扫雷 小脚本 自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式.一.准备工作1.扫雷游戏 我是 ...

  6. 如何用python制作画像_利用Python搭建用户画像系统

    用户画像是当下很多企业都会提及的概念,多数情况下会和大数据以及营销挂钩.本文将对用户画像的相关知识进行进行简单的介绍,并利用Python去实现一个简单的用户画像系统. 1.什么是用户画像 用户画像可以 ...

  7. python照片墙地图_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  8. python绘图库_利用python中的绘图库绘图的方法介绍

    matplotlib是Python最著名的绘图库,本文给大家分享了利用matplotlib+numpy绘制多种绘图的方法实例,其中包括填充图.散点图(scatter plots).. 条形图(bar ...

  9. python 取反_利用python怎么对bool布尔值进行取反

    利用python怎么对bool布尔值进行取反 发布时间:2020-12-14 14:49:17 来源:亿速云 阅读:71 这期内容当中小编将会给大家带来有关利用python怎么对bool布尔值进行取反 ...

最新文章

  1. framebuffer 保存 bmp图片格式
  2. 计算机组成原理形考任务五答案,计算机组成原理形考任务5
  3. 服务器控件 原生html,应用样式到HTML服务器控件
  4. 在Unity中做一个淡入式的屏幕虚化
  5. vbs代码炫酷效果_Python|实现黑客帝国代码雨效果
  6. python语言的单行注释以井号开头_【学习】Python语言入门
  7. JDBC原理及应用模板
  8. ICCV2021 workshop 多视角残缺点云的补全与配准
  9. SelectObject失败原因 cannot convert from ‘HGDIOBJ‘ to ‘CBrush‘
  10. java实现验证码登录
  11. 副业宝典~副业思维让你拥有更多钱
  12. Linux驱动开发-编写OLED显示屏驱动
  13. obj 格式3D模型转 gltf 格式
  14. 每天学点5G-5G NEF
  15. 整理网线接水晶头步骤
  16. 读《互联网:一部概念史》有感
  17. java注册用户_用java编程实现用户注册并进行登录操作
  18. c++使用ODBC读取EXCEL表格
  19. python爬取《龙岭迷窟》的数据,看看质量剧情还原度到底怎么样
  20. 武汉计算机专业的学校,计算机专业有哪些武汉的三本学校

热门文章

  1. 在各种xDSL技术中,能提供上下行信道非对称传输的是______。正确答案 B
  2. ACMNO.42 C语言-第几天 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。利用结构体的在最下面
  3. 使用PyTorch进行情侣幸福度测试指南
  4. 使用计算机视觉在钢铁平面上检测焊接缺陷
  5. mongodb 安装时错误
  6. 洛谷P1417 烹调方案
  7. 浅谈Greenplum的Boolean类型与Text类型之间的转换
  8. 《从缺陷中学习C/C++》——6.15 试图产生的指针很可能不存在
  9. 使用Maven管理Java项目
  10. SilverLight学习笔记--Silverlight中WebRequest通讯