使用 Python 读取电子表格中的数据实例详解


Posted in Python onApril 17, 2020

Python 是最流行、功能最强大的编程语言之一。由于它是自由开源的,因此每个人都可以使用。大多数 Fedora 系统都已安装了该语言。Python 可用于多种任务,其中包括处理逗号分隔值(CSV)数据。CSV文件一开始往往是以表格或电子表格的形式出现。本文介绍了如何在 Python 3 中处理 CSV 数据。

CSV 数据正如其名。CSV 文件按行放置数据,数值之间用逗号分隔。每行由相同的字段定义。简短的 CSV 文件通常易于阅读和理解。但是较长的数据文件或具有更多字段的数据文件可能很难用肉眼解析,因此在这种情况下计算机做得更好。

这是一个简单的示例,其中的字段是 NameEmail Country。在此例中,CSV 数据将字段定义作为第一行,尽管并非总是如此。

Name,Email,Country
John Q. Smith,jqsmith@example.com,USA
Petr Novak,pnovak@example.com,CZ
Bernard Jones,bjones@example.com,UK

从电子表格读取 CSV

Python 包含了一个 csv 模块,它可读取和写入 CSV 数据。大多数电子表格应用,无论是原生(例如 Excel 或 Numbers)还是基于 Web 的(例如 Google Sheet),都可以导出 CSV 数据。实际上,许多其他可发布表格报告的服务也可以导出为 CSV(例如,PayPal)。

Python csv 模块有一个名为 DictReader 的内置读取器方法,它可以将每个数据行作为有序字典 (OrderedDict) 处理。它需要一个文件对象访问 CSV 数据。因此,如果上面的文件在当前目录中为 example.csv,那么以下代码段是获取此数据的一种方法:

f = open('example.csv', 'r')
from csv import DictReader
d = DictReader(f)
data = []
for row in d:
  data.append(row)

现在,内存中的 data 对象是 OrderedDict 对象的列表:

[OrderedDict([('Name', 'John Q. Smith'),
        ('Email', 'jqsmith@example.com'),
        ('Country', 'USA')]),
 OrderedDict([('Name', 'Petr Novak'),
        ('Email', 'pnovak@example.com'),
        ('Country', 'CZ')]),
 OrderedDict([('Name', 'Bernard Jones'),
        ('Email', 'bjones@example.com'),
        ('Country', 'UK')])]

引用这些对象很容易:

>>> print(data[0]['Country'])
USA
>>> print(data[2]['Email'])
bjones@example.com

顺便说一句,如果你需要处理没有字段名标题行的 CSV 文件,那么 DictReader 类可以让你定义它们。在上面的示例中,添加 fieldnames 参数并传递一系列名称:

d = DictReader(f, fieldnames=['Name', 'Email', 'Country'])

真实例子

我最近想从一长串人员名单中随机选择一个中奖者。我从电子表格中提取的 CSV 数据是一个简单的名字和邮件地址列表。

幸运的是,Python 有一个有用的 random 模块,可以很好地生成随机值。该模块 Random 类中的 randrange 函数正是我需要的。你可以给它一个常规的数字范围(例如整数),以及它们之间的步长值。然后,该函数会生成一个随机结果,这意味着我可以在数据的总行数范围内获得一个随机整数(或者说是行号)。

这个小程序运行良好:

from csv import DictReader
from random import Random
d = DictReader(open('mydata.csv'))
data = []
for row in d:
  data.append(row)
r = Random()
winner = data[r.randrange(0, len(data), 1)]
print('The winner is:', winner['Name'])
print('Email address:', winner['Email'])

显然,这个例子非常简单。电子表格本身包含了复杂的分析数据的方法。但是,如果你想在电子表格应用之外做某事,Python 或许是一种技巧!

总结

到此这篇关于使用 Python 读取电子表格中的数据实例详解的文章就介绍到这了,更多相关python 读取表格数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
讲解Python中if语句的嵌套用法
May 14 Python
Python常用算法学习基础教程
Apr 13 Python
python数据结构之列表和元组的详解
Sep 23 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
python机器学习之决策树分类详解
Dec 20 Python
Python批处理删除和重命名文件夹的实例
Jul 11 Python
django 外键model的互相读取方法
Dec 15 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
python3中sys.argv的实例用法
Apr 24 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 Python
详解pandas apply 并行处理的几种方法
Feb 24 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 #Python
jupyternotebook 撤销删除的操作方式
Apr 17 #Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 #Python
jupyter notebook读取/导出文件/图片实例
Apr 16 #Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 #Python
python datetime处理时间小结
Apr 16 #Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
Apr 16 #Python
You might like
PHP借助phpmailer发送邮件
2015/05/11 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
自己使用总结Python程序代码片段
2015/06/02 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
使用Python设计一个代码统计工具
2018/04/04 Python
Python 判断奇数偶数的方法
2018/12/20 Python
在python中用url_for构造URL的方法
2019/07/25 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
中国电视购物:快乐购
2017/02/04 全球购物
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
员工培训邀请函
2014/01/11 职场文书
学习十八大报告感言
2014/02/28 职场文书
股权投资意向书
2014/04/01 职场文书
2016中秋节问候语
2015/11/11 职场文书