使用 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实现的防DDoS脚本
Feb 08 Python
python通过openpyxl生成Excel文件的方法
May 12 Python
20招让你的Python飞起来!
Sep 27 Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
python实现监控阿里云账户余额功能
Dec 16 Python
python第三方库学习笔记
Feb 07 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
python的json包位置及用法总结
Jun 21 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
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
php实现购物车功能(上)
2020/07/23 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
修改vue+webpack run build的路径方法
2018/09/01 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python解析xml中dom元素的方法
2015/03/12 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
一道Delphi上机题
2012/06/04 面试题
春节联欢会主持词
2014/03/24 职场文书
体育运动口号
2014/06/09 职场文书
中学清明节活动总结
2014/07/04 职场文书