使用 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 getopt 参数处理小示例
Jun 09 Python
python 随机数生成的代码的详细分析
May 15 Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 Python
Python3 socket同步通信简单示例
Jun 07 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
python使用turtle库绘制树
Jun 25 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
基于python实现坦克大战游戏
Oct 27 Python
python爬虫之selenium库的安装及使用教程
May 23 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 设置MySQL连接字符集的方法
2011/01/02 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php统计文章排行示例
2014/03/04 PHP
PHP中使用BigMap实例
2015/03/30 PHP
php实现生成验证码实例分享
2016/04/10 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
全面理解闭包机制
2016/07/11 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
angular2+node.js express打包部署的实战
2017/07/27 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
详解vue中组件参数
2018/07/09 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python访问纯真IP数据库的代码
2011/05/19 Python
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
int在python中的含义以及用法
2019/06/27 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
HTML5注册页面示例代码
2014/03/27 HTML / CSS
德语专业求职信
2014/03/12 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书