导读:现有的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版)

点击上图了解及购买
转载请联系微信:DoctorData

推荐语:这是一本将数据分析技术与数据使用场景深度结合的著作,从实战角度讲解了如何利用Python进行数据分析和数据化运营。本书与同类书大的不同在于,并不只有纯粹的关于数据分析技术和工具的讲解,而且还与数据使用场景深度结合,在业务上真正可指导落地。此外,本书作者提供微信、邮箱等,可通过实时和离线两种方式及时为读者在线传道、受业、解惑。

有话要说

一文看懂用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用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  3. python读取xlsx python读取excel数据

    如题 python pandas读取excel数据 如何读取特定sheet的excel数据 1.安装pandas 已经有的可以不用再安装 >pip install pandas 2.读取数据 首 ...

  4. Python读取excel数据且横轴是日期的图像绘制

    Python的matplotlib包含很多图表函数,其中plot()函数是绘制坐标图的. 通常情况下,横轴和纵轴都是数值型数据很好画图,直接带入数据,坐标轴会自动调节大小和显示密度.但是当横轴是日期时 ...

  5. 用python读取excel数据、并作图_Python读取Excel表格,并同时画折线图和柱状图的方法...

    今日给大家分享一个Python读取Excel表格,同时采用表格中的数值画图柱状图和折线图,这里只需要几行代码便可以实. 首先我们需要安装一个Excel操作的库xlrd,这个很简单,在安装Python后 ...

  6. python读取excel数据使用pyecharts展示

    目录 一.场景 二.思路 三.代码 接上一博文读取[excel数据] 一.场景 场景:数据已经从excel读取完毕了,怎么展示呢 二.思路 思路:1.读取excel数据出来之后,那就是怎么去操作数据 ...

  7. python 批量打印文档_使用python将Excel数据填充Word模板并生成Word

    [项目需求] Excel中有一万多条学生学平险数据,需要给每位学生打印购买回执单,回执单包括学生姓名,身份证号,学校等信息,目前只能从Excel拷贝数据到Word模板中,然后打印,效率及其低下,寻求帮 ...

  8. python读取excel数据并实现数据相乘等其他运算

    利用python处理excel的数据:将其读取出来,并且最终实现数据相乘,打印出相乘的结果,其他的运算如加减都可以类比得出 实质在于,将其转化为一个列表,接着进行赋值 以下的代码很简单,相当于一个模板 ...

  9. Python 读取excel数据并填入excel,批量生成模板

    文章目录 一.问题-来源 二.问题-困难 三.问题-解决 总结 一.问题-来源 前几天,我姐遇见了一个难题:需要从excel表格中不断读取数据并生成个人信息模板 二.问题-困难 1.首先我想到了在wo ...

最新文章

  1. SVN项目锁定解决方案
  2. 输出10000内所有素数
  3. springboot项目中的注解 启动项目的方式 解决spring的bean.xml配置不生效 spring的基础JDBC配置
  4. (转)WEB2.0的单手定则
  5. tf 矩阵行和列交换_TF-搞不懂的TF矩阵加法
  6. 【转】理解OAuth 2.0
  7. 开源开放 | Beyond 预训练语言模型,NLP还需要什么样的知识?
  8. nginx学习(一):基本安装
  9. Java有了synchronized,为什么还要提供Lock
  10. python调用系统命令_Python调用外部系统命令
  11. c mysql 返回自增id_mysql返回自增id
  12. C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS
  13. PowerDesigner执行sql脚本方式建立数据模型
  14. VB程序设计教程(第四版)龚沛曾-实验8-3
  15. 为什么C++开发不需要安装STL库
  16. 一张帖搞定同学们入学黑马前所有难题
  17. 打游戏计算机内存不足,玩游戏老提示内存不足怎么办
  18. Typora配置PicGo提示Failed to fetch问题解决
  19. java8使用并行流parallelStream以及普通迭代,并行流,普通流之间的效率对比
  20. 2019目标,做个精力充沛的人,身体工作双丰收

热门文章

  1. Linux学习笔记-Linux下的设备文件
  2. Qt文档阅读笔记-Q_ASSERT的另外一总用法(大佬用法)
  3. html调用xfplugin,使用多设备执行脚本的时候,html report功能无法正常使用
  4. thread local性能 c++_MySQL 5.7 amp; MySQL 8.0 性能对比
  5. android输入框圆形,GitHub - mylhyl/Android-CircleDialog: 仿IOS圆角对话框、进度条、列表框、输入框,ad广告框,支持横竖屏切换...
  6. android AVB2.0(四)libavb库介绍
  7. 测试人员如何搭建自动打包部署平台?(具体详细步骤及下载地址)
  8. (王道408考研数据结构)第六章图-第四节5:最短路径之弗洛伊德算法(思想、代码、演示、答题规范)
  9. (计算机组成原理)第七章输入和输出系统-第四节2:I/O方式之程序中断方式
  10. windows route netstat arp命令