专栏首页华章科技一文看懂用Python读取Excel数据

一文看懂用Python读取Excel数据

导读:现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上)。

Python处理Excel文件主要是第三方模块库xlrd、xlwt、pyexcel-xls、xluntils和pyExcel-erator等,此外Pandas中也带有可以读取Excel文件的模块(read_excel)。

基于扩展知识的目的,本文使用xlrd模块读取Excel数据。

作者:宋天龙

来源:大数据DT(ID:bigdatadt)

首先安装该库,Anaconda中已经默认安装了xlrd和xlwt模块,用于Excel的读写操作。如果读者系统环境中没有,可以在Jupyter输入以下命令安装。

!pip install xlrd

然后我们以“附件-chapter2”文件夹中的demo.xlsx数据文件为例,介绍该库的具体应用。

附件下载地址:

http://www.dataivy.cn/book/python_book_v2.zip

数据概览如图所示。

▲数据文件内容

import xlrd  # 导入库
# 打开文件
xlsx = xlrd.open_workbook('demo.xlsx')
# 查看所有sheet列表
print('All sheets: %s' % xlsx.sheet_names())

上述代码中,我们先读取一个Excel文件,输出文件的sheet名称列表。由于里面只有一张sheet,一次只有一个值。

结果为:

All sheets: ['Sheet1']

查看sheet1的数据概况:

sheet1 = xlsx.sheets()[0]    # 获得第1张sheet,索引从0开始
sheet1_name = sheet1.name    # 获得名称
sheet1_cols = sheet1.ncols   # 获得列数
sheet1_nrows = sheet1.nrows  # 获得行数
print('Sheet1 Name: %s\nSheet1 cols: %s\nSheet1 rows: %s' % (sheet1_name, sheet1_cols, sheet1_nrows))

我们分别获取了第1张sheet(虽然里面只有一张,但在多sheet情况下可通过索引循环输出)的名称、列数量和行数据。结果如下:

Sheet1 Name: sheet1
Sheet1 cols: 4
Sheet1 rows: 10

查看sheet1的特定切片数据:

sheet1_nrows4 = sheet1.row_values(4)  # 获得第4行数据
sheet1_cols2 = sheet1.col_values(2)   # 获得第2列数据
cell23 = sheet1.row(2)[3].value       # 查看第3行第4列数据
print('Row 4: %s\nCol 2: %s\nCell 1: %s\n' % (sheet1_nrows4, sheet1_cols2, cell23))

通过查看特定行、列或行列组合的索引来输出,结果如下:

Row 4: ['431381197408191515', '有效', 42725.0, '深圳市']
Col 2: ['Create_Time', 42725.0, 42725.0, 42725.0, 42725.0, 42725.0, 42725.0, 42725.0, 42725.0, 42725.0]
Cell 1: 深圳市

查看sheet1的数据明细:

for i in range(sheet1_nrows):  # 逐行打印sheet1数据
    print(sheet1.row_values(i))

逐条输出结果,部分结果如下(为了节约篇幅,中间的数据内容以…代替):

['ID_number', 'Status', 'Create_Time', 'Business_City']
['431381198109106573', '有效', 42725.0, '深圳市']
['431381198809122734', '有效', 42725.0, '深圳市']
…
['431381198901176911', '有效', 42725.0, '深圳市']
['43138119870827275X', '有效', 42725.0, '深圳市']

上述操作只是将数据从Excel中读取出来,将读取的数据转换为数组便可以进行矩阵计算。由于矩阵计算大多是基于数值型数据实现的,因此上述数据将无法适用于大多数科学计算场景,这点需要注意。

总结:在企业实际场景中,由于Excel本身的限制和适用,其无法存储和计算过大(例如千万级的数据记录)的数据量,并且Excel本身也不是为了海量数据的应用而产生的,因此,Excel可以作为日常基本数据处理、补充数据来源或者汇总级别的数据进行读取,同时也可以作为数据结果展示的载体,这种应用下对于大量数值表格的应用效果非常好。

关于作者:宋天龙,深大数据技术专家,触脉咨询合伙人兼副总裁,前Webtrekk中国区技术和咨询负责人(德国最大在线数据分析服务提供商)。擅长数据挖掘、建模、分析与运营,精通端到端数据价值场景设计、业务需求转换、数据结构梳理、数据建模与学习以及数据工程交付。在电子商务、零售、银行、保险等多个行业拥有丰富的数据项目工作经验。

本文摘编自《Python数据分析与数据化运营》(第2版),经出版方授权发布。

延伸阅读《Python数据分析与数据化运营》

(第2版)

本文分享自微信公众号 - 大数据(hzdashuju)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 英伟达小姐姐的Python隐藏技巧合集,推特2400赞,代码可以直接跑

    常常发资源的英伟达工程师小姐姐Chip Huyen,又发射了一套Python隐藏功能合集。

    量子位
  • PyTorch&TensorFlow跑分对决:哪个平台运行NLP模型推理更快

    开源社区的支持度、上手的难易度都是重要的参考。还有人说:学术界用PyTorch,工业界用TensorFlow。

    磐创AI
  • 【Python 第75课】可迭代对象和迭代器

    for 循环是我们在 Python 里非常常用的一个语法,但你有没有思考过 for 循环是怎样实现的?

    Crossin先生
  • grafana&prometheus生产级容器化监控-2:监控rocketmq

    笔者为了简单快速,是直接调用rocketmq-console的ajax/http取现成数据,所以本例rocketmq-exporter的运行必须有对应的rock...

    Criss@陈磊
  • 字体加密 | 猫眼榜单字体解密(性感咸鱼,在线炒冷饭)

    猫眼的字体加密相信大家都很熟悉,每一个分析字体加密的博主都会写一次字体加密,没写过至少也会做过。

    咸鱼学Python
  • R&Python Data Science 系列:数据处理(1)

    数据科学主要以统计学、机器学习、数据可视化等,使用工具将原始数据转换为认识和知识(可视化或者模型),主要研究内容包括数据导入、数据转换、可视化、构建模型等。...

    1480
  • 测试开发进阶(二十八)

    进入 get_object_or_404可以看到一个解包,这样就拿到了查询集中 id=1的内容

    zx钟
  • 大数据处理实践!手把手实现PySpark机器学习项目-回归算法

    PySpark作为工业界常用于处理大数据以及分布式计算的工具,特别是在算法建模时起到了非常大的作用。PySpark如何建模呢?这篇文章手把手带你入门PySpa...

    Datawhale
  • 干货|变成计算机视觉大师,需要经历的几个阶段?

    计算机视觉(Computer vision)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别、跟踪和测量等机器视觉,...

    小白学视觉
  • ROS kinetic 下单目摄像机的标定

    https://github.com/bosch-ros-pkg/usb_cam

    小白学视觉

扫码关注云+社区

领取腾讯云代金券