Python 读取 CSV 文件

您所在的位置:网站首页 python读取csv文件的路径 Python 读取 CSV 文件

Python 读取 CSV 文件

#Python 读取 CSV 文件| 来源: 网络整理| 查看: 265

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情

前言

CSV 是用逗号分隔的表格数据文件,这是一种创建结构化数据的便捷方式,其本质也是文本文件,而不是复杂的二进制格式文件(例如 Excel 或其他格式)。CSV 文件也称为逗号分隔文件,大多数电子表格可以直接使用 CSV 文件。

数据文件

本文使用的股价数据文件来自 GitHib,下载数据文件后,查看其内容,可以看到数据集中包含时间、开盘时股价等一系列相关信息。

Python 读取 CSV 文件

为了读取 CSV 文件,首先导入 csv 模块:

>>> import csv 复制代码

打开文件,创建一个 with 文件管理上下文(确保文件在使用完毕后自动关闭),并遍历它以显示所有行的表格数据:

>>> with open('stock_data.csv') as f: ...     data = csv.reader(f) ...     for row in data: ...             print(row) ... ['1997-05-13', '11.139000000000001', '11.209000000000001', '10.995999999999999', '11.077', '66206289', '0', 'MSFT'] ['1997-05-14', '11.139000000000001', '11.152999999999999', '10.876', '10.899000000000001', '80734731', '0', 'MSFT'] ['1997-05-15', '10.908', '11.085999999999999', '10.899000000000001', '11.017999999999999', '55637436', '0', 'MSFT'] ... 复制代码

csv.reader 类允许我们按照表格数据的格式将返回的数据细分为列表,然后进一步进行构造,其中所有值都被描述为字符串,需要注意的是,csv.reader 并不区别表格的第一行是否是表头行。

打开文件并使用 DictReader 构造数据:

>>> with open('stock_data.csv') as f: ...     data = csv.DictReader(f) ...     structured_data = [row for row in data] ... >>> structured_data[0] OrderedDict([('Date', '1984-09-07'), ('Open', '0.42388000000000003'), ('High', '0.42901999999999996'), ('Low', '0.41873999999999995'), ('Close', '0.42388000000000003'), ('Volume', '23220030'), ('OpenInt', '0'), ('Stock', 'AAPL')]) 复制代码

csv文件读取

为了更结构化地读取文件,我们可以使用 csv.DictReader 构造数据。默认情况下,它读取第一行作为定义适用字段的标题,然后将每一行转换为包含这些字段的字典。

结构化数据 structured_data 中的每个项目都是一个包含每个值的完整字典:

>>> structured_data[0].keys() odict_keys(['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'OpenInt', 'Stock']) >>> structured_data[0]['Date'] '1984-09-07' 复制代码

CSV 具有非常松散定义的文件结构解释,有多种不同的方法可以用于存储数据。这些方法在 csv 模块中用 dialects 表示。例如,值可以用逗号、分号或制表符分隔。可以通过调用 csv.list_dialect() 显示默认接受的 dialects 列表:

>>> print(csv.list_dialects()) ['excel', 'excel-tab', 'unix'] 复制代码

默认情况下的 dialect 是 Excel,这是最常见的一种,大多数其他电子表格也会经常使用它。

dialect 也可以通过 Sniffer 类从文件本身推断出来。Sniffer 类分析文件(或整个文件)的样本并返回 dialect 对象以允许以正确的方式读取:

>>> with open('stock_data.csv', newline='') as f: ...     dialect = csv.Sniffer().sniff(f.read()) ... >>> dialect 复制代码


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3