使用 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正则表达式操作指南(re使用)
Sep 06 Python
python使用线程封装的一个简单定时器类实例
May 16 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 Python
教你用Python创建微信聊天机器人
Mar 31 Python
transform python环境快速配置方法
Sep 27 Python
详解python使用turtle库来画一朵花
Mar 21 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
Django实现web端tailf日志文件功能及实例详解
Jul 28 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 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
使用迭代器 遍历文件信息的详解
2013/06/08 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
yii用户注册表单验证实例
2015/12/26 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
js 加载并解析XML字符串的代码
2009/12/13 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
JS中的三个循环小结
2017/06/20 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
HTML5标签小集
2011/08/02 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
法学院方阵解说词
2014/01/29 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
合作意向书格式及范文
2014/03/31 职场文书
冬季施工防火方案
2014/05/17 职场文书
管理失职检讨书范文
2015/05/05 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android