Python是数据分析的强大利器
利用Python做数据分析,第一步就是学习如何读取日常工作中产生各种excel报表并存入数据中,方便后续数据处理。
这里向大家分享python如何读取excel,并使用Python将数据存入Mysql中,有需要的朋友们一起来看看吧。
背景
需要导入全国高校名录到数据库,从教委网站下到了最新的数据,是excel格式,需要做一个工具进行导入,想试用一下python,说干就干。
库
- xlrd : excel读写库
- pymysql : mysql数据库驱动库,纯python打造
- re : 正则表达式库,核心库
前两个用pip轻松完成安装,本人是在mac pro是进行的,过程很顺利,以前在mac上装mysqlclient一直安装不上,所以一度放弃使用python,但我在linux下安装mysqlclient却没有任何问题。
源代码
很简单的小脚本,留存纪念。值得注意的一点,数据库连接字段串中要设定字符编码,不然默认是lanti-1,写入会出错。
import xlrd import pymysql import re conn = pymysql.connect(host='database connect address', port=1234, user='root', passwd='****', db='database name', charset='utf8mb4') p = re.compile(r'\s') data = xlrd.open_workbook('./W020170616379651135432.xls') table = data.sheets()[0] t = table.col_values(1) nrows = table.nrows for i in range(nrows): r1 = table.row_values(i) if len(r1[2]) == 10: cur = conn.cursor() cur.execute('insert into `university` (`id`, `name`, `ministry`, `city`, `level`, `memo`) values (%s, %s, %s, %s, %s, %s)', (r1[2], p.sub('', r1[1]), p.sub('', r1[3]), p.sub('', r1[4]), r1[5], r1[6])) conn.commit() cur.close() conn.close()
心得
写惯了类C的语言,不太习惯python,想同时掌握两种风格的编程语言,好痛苦啊。python编程效率的确不错,这是我第一次用python写实用小程序,连查带写带调试,一共也就花了一个来小时。python库与资料丰富,不愁找不到合适的^_^
数据库写入优化
早上闲来无事,用批量写入优化了一下,任务秒完成,比一条条写入快了很多, 比我预想的差别还要大。看来,没有不好的工具,只是我们没有用好啊!
import xlrd import pymysql import re conn = pymysql.connect(host='database connect address', port=1234, user='root', passwd='****', db='database name', charset='utf8mb4') p = re.compile(r'\s') data = xlrd.open_workbook('./W020170616379651135432.xls') table = data.sheets()[0] t = table.col_values(1) nrows = table.nrows ops = [] for i in range(nrows): r1 = table.row_values(i) if len(r1[2]) == 10: ops.append((r1[2], p.sub('', r1[1]), p.sub('', r1[3]), p.sub('', r1[4]), r1[5], r1[6])) cur = conn.cursor() cur.executemany('insert into `university_copy` (`id`, `name`, `ministry`, `city`, `level`, `memo`) values (%s, %s, %s, %s, %s, %s)', ops) conn.commit() cur.close() conn.close()
python读取excel文件遇到的问题
1、mac安装xlrd模块,如果cmd下执行pip install xlrd安装不成功,可以直接去官网下载,名称类似这样的文件xlrd-1.0.0-py3-none-any.whl,切换到已下载的文件路径在cmd下执行pip3 install xlrd-1.0.0-py3-none-any.whl即可
http://pypi.python.org/pypi/xlrd
2、python打开excel报xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'username'
可以确认下要打开的excel保存时是不是本身就存在兼容性等格式提示,如果有的话,需要重新建一个不存在格式问题的文件
import xlrd from os.path import join,abspath,dirname fname = join(dirname(dirname(abspath(__file__))),'test1.xls') bk = xlrd.open_workbook(fname, encoding_override="utf-8") shxrange = range(bk.nsheets) try: sh = bk.sheet_by_name("工作表1") # 获取行数 nrows = sh.nrows # 获取列数 ncols = sh.ncols print("nrows %d, ncols %d" % (nrows, ncols)) # 获取第一行第一列数据 cell_value = sh.cell_value(1, 1) # print cell_value row_list = [] # 获取各行数据 for i in range(0, nrows): row_data = sh.row_values(i) row_list.append(row_data) except: print("no sheet in %s named Sheet1" % fname)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 【原神】V5.0攻略 | 林尼攻略一图流
- 李翊君.1993-相思的烈酒【上华】【WAV+CUE】
- 古巨基.1998-LEO.KU(国)【千禧年代】【WAV+CUE】
- 郭子.2001-原来你什么都不想要创作集丫滚石】【WAV+CUE】
- 《使命召唤:黑色行动6》新预告公布!10月25日发售
- Atlus《暗喻幻想》媒体评分汇总:高分好评如潮!
- 2024金摇杆奖提名揭晓 《黑神话》角逐最佳视觉设计!
- 群星《新说唱2024 第3期 (上)》[320K/MP3][32.76MB]
- 群星《新说唱2024 第3期 (上)》[FLAC/分轨][95.38MB]
- 群星《新说唱2024 第3期 (下)》[320K/MP3][31.36MB]
- 幻兽帕鲁手游什么时候正式上线 最新消息一览
- 西普大陆BOSS位置盘点 解锁天启纪元玩法
- 西普大陆精灵进阶培养攻略 精灵养成指南
- dnf手游法控法系职业哪个强 dnf手游法控法系职业强度排行
- 魔兽世界血藤护目镜图纸在哪买 wlk血藤护目镜图纸购买位置介绍