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

 更新时间:2020年04月17日 08:58:28   作者:Paul W. Frields  
这篇文章主要介绍了使用 Python 读取电子表格中的数据,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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的f-string使用技巧

    Python的f-string使用技巧

    Python很早就引入了一种称为 f-string 的字符串格式化方法,它代表格式化字符串字面值,本文主要介绍了Python的f-string使用技巧,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • pytorch之torch_scatter.scatter_max()用法

    pytorch之torch_scatter.scatter_max()用法

    这篇文章主要介绍了pytorch之torch_scatter.scatter_max()用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python+opencv3生成一个自定义纯色图教程

    python+opencv3生成一个自定义纯色图教程

    今天小编就为大家分享一篇python+opencv3生成一个自定义纯色图教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 使用pytorch进行张量计算、自动求导和神经网络构建功能

    使用pytorch进行张量计算、自动求导和神经网络构建功能

    pytorch它是一个基于Python的开源深度学习框架,它提供了两个核心功能:张量计算和自动求导,这篇文章主要介绍了使用pytorch进行张量计算、自动求导和神经网络构建,需要的朋友可以参考下
    2023-04-04
  • Python并发编程之进程间通信原理及实现解析

    Python并发编程之进程间通信原理及实现解析

    这篇文章主要为大家介绍了Python并发编程之进程间通信原理及实现解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • python高斯分布概率密度函数的使用详解

    python高斯分布概率密度函数的使用详解

    今天小编就为大家分享一篇python高斯分布概率密度函数的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python怎么去除字符串最后的换行符‘\n’

    python怎么去除字符串最后的换行符‘\n’

    这篇文章主要介绍了python去除字符串最后的换行符'\n',本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 使用Python 正则匹配两个特定字符之间的字符方法

    使用Python 正则匹配两个特定字符之间的字符方法

    今天小编就为大家分享一篇使用Python 正则匹配两个特定字符之间的字符方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python爬虫简单运用爬取代理IP的实现

    Python爬虫简单运用爬取代理IP的实现

    这篇文章主要介绍了Python爬虫简单运用爬取代理IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 将matplotlib绘图嵌入pyqt的方法示例

    将matplotlib绘图嵌入pyqt的方法示例

    这篇文章主要介绍了将matplotlib绘图嵌入pyqt的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01

最新评论