如何在Python中读取CSV文件(模块、Pandas示例)

什么是 CSV 文件?

CSV 文件是一种简单的纯文本文件,它使用特定的结构来组织表格数据。CSV 文件的标准格式由行和列数据定义,其中换行符用于终止每一行并开始下一行,并且行内的每一列都用逗号分隔。

CSV 作为一种紧凑、简单且通用的格式,是数据交换的常用格式。许多在线服务允许用户将表格数据从网站导出为 CSV 文件。CSV 文件可以在 Excel 中打开,几乎所有数据库都提供工具来允许从 CSV 文件导入数据。

CSV 示例文件

表格形式的数据也称为 CSV(逗号分隔值),字面意思是“逗号分隔的值”。这是一种用于表示表格数据的文本格式。文件中的每一行都是表格中的一行。单个列的值由分隔符分隔——逗号 (,)、分号 (;) 或其他符号。Python 可以轻松地读取和处理 CSV。

考虑以下表格

表格数据

编程语言 设计者 诞生年份 扩展
Python Guido van Rossum 1991 .py
Java James Gosling 1995 .java
C++ Bjarne Stroustrup 1983 .cpp

你可以像下面这样用 CSV 表示此表格。

CSV 数据

编程语言,设计者,诞生年份,扩展名

Python,Guido van Rossum,1991,.py

Java,James Gosling,1995,.java

C++,Bjarne Stroustrup,1983,.cpp

正如你所见,每一行都是一个新的换行符,每一列都用逗号分隔。这就是 CSV 文件外观的示例。

下载 CSV 数据

Python CSV 模块

Python 提供了一个 CSV 模块来处理 CSV 文件。要读/写数据,你需要遍历 CSV 的行。你需要使用 split 方法从指定列中获取数据。

CSV 模块函数

在 CSV 模块文档中,你可以找到以下函数

  • csv.field_size_limit – 返回最大字段大小
  • csv.get_dialect – 获取与名称关联的方言
  • csv.list_dialects – 显示所有已注册的方言
  • csv.reader – 从 csv 文件读取数据
  • csv.register_dialect – 将方言与名称关联
  • csv.writer – 将数据写入 csv 文件
  • csv.unregister_dialect – 删除与方言注册表中的名称关联的方言
  • csv.QUOTE_ALL – 引用所有内容,无论类型如何。
  • csv.QUOTE_MINIMAL – 引用特殊字符的字段
  • csv.QUOTE_NONNUMERIC – 引用所有非数字值的字段
  • csv.QUOTE_NONE – 输出中不引用任何内容

在本教程中,我们将只关注 reader 和 writer 函数,它们允许您编辑、修改和操作 CSV 文件中的数据。

如何在 Python 中读取 CSV 文件

以下是 Python 中读取 CSV 文件的步骤。

步骤 1) 要从 CSV 文件读取数据,必须使用 reader 函数生成 reader 对象。

reader 函数旨在逐行读取文件并将所有列制作成列表。然后,您需要选择要从中获取变量数据的列。

这听起来比实际要复杂得多。让我们来看一下这段 Python 读取 CSV 文件的代码,您会发现处理 CSV 文件并不难。

#import necessary modules
import csv
with open('X:\data.csv','rt')as f:
  data = csv.reader(f)
  for row in data:
        print(row)

步骤 2) 执行上述程序后,输出将是

['Programming language; Designed by; Appeared; Extension']
['Python; Guido van Rossum; 1991; .py']
['Java; James Gosling; 1995; .java']
['C++; Bjarne Stroustrup;1983;.cpp']

如何在 Python 中将 CSV 文件读取到字典中

您也可以使用 DictReader 读取 CSV 文件。结果被解释为一个字典,其中标题行是键,其他行是值。

考虑以下代码:

#import necessary modules
import csv

reader = csv.DictReader(open("file2.csv"))
for raw in reader:
    print(raw)

此代码的结果是

OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')])
OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')])
OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])

Read a CSV file into a Dictionary

这种从 CSV 文件读取数据的方式比之前的方法要容易得多。然而,这并不是读取数据的最佳方式。

如何在 Python 中写入 CSV 文件

这是在 Python 中写入 CSV 文件的方法

当您有一组希望存储在 CSV 文件中的数据时,您必须使用 writer() 函数。要逐行(行)迭代数据,您必须使用 writerow() 函数。

考虑以下示例。我们将数据写入名为“writeData.csv”的文件,其中分隔符是撇号。

#import necessary modules
import csv

with open('X:\writeData.csv', mode='w') as file:
    writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    #way to write to csv file
    writer.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])
    writer.writerow(['Python', 'Guido van Rossum', '1991', '.py'])
    writer.writerow(['Java', 'James Gosling', '1995', '.java'])
    writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])

CSV 文件中的结果是

Programming language, Designed by, Appeared, Extension 
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C++, Bjarne Stroustrup,1983,.cpp

write CSV File in Python

使用 Pandas 读取 CSV 文件

Pandas 是一个开源库,允许您在 Python 中导入 CSV 并执行数据操作。Pandas 提供了一种简单的方法来创建、操作和删除数据。

您必须使用命令 `pip install pandas` 安装 pandas 库。在 Windows 中,您将在命令提示符中执行此命令,而在 Linux 中,则在终端中执行。

将 CSV 读取到 pandas DataFrame 非常快速简单

#import necessary modules
import pandas
result = pandas.read_csv('X:\data.csv')
print(result)

Pandas 示例 read CSV 的结果

Programming language, Designed by, Appeared, Extension 
0    Python, Guido van Rossum, 1991, .py
1    Java, James Gosling, 1995, .java
2    C++, Bjarne Stroustrup,1983,.cpp

非常实用的库。仅需三行代码即可获得与之前相同的结果。Pandas 知道 CSV 的第一行包含列名,并且会自动使用它们。

使用 Pandas 写入 CSV 文件

使用 Pandas 写入 CSV 文件和读取一样简单。您可以在此处对此进行验证。首先,您必须根据以下 Python 写入 CSV 代码创建 DataFrame。

from pandas import DataFrame
C = {'Programming language': ['Python','Java', 'C++'],
        'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],
        'Appeared': ['1991', '1995', '1985'],
        'Extension': ['.py', '.java', '.cpp'],
    }
df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension'])
export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be stored
print (df)

这是输出

Programming language, Designed by, Appeared, Extension
0    Python, Guido van Rossum, 1991, .py
1    Java, James Gosling, 1995, .java
2    C++, Bjarne Stroustrup,1983,.cpp

CSV 文件将在指定位置创建。

Write CSV File using Pandas

结论

所以,现在您知道如何使用“csv”方法以及如何以 CSV 格式读写数据。CSV 文件被广泛用于软件应用程序,因为它们易于阅读和管理,并且其较小的尺寸使其处理和传输速度相对较快。

csv 模块提供了各种函数和类,让您可以轻松地进行读写。您可以查阅官方 Python 文档,查找更多有趣的技巧和模块。CSV 是保存、查看和发送数据的最佳方式。实际上,它并没有初看起来那么难学。但只要稍加练习,您就能掌握它。

Pandas 是读取 CSV 文件的一个很好的替代方案。

此外,还可以使用 ANTLR、PLY 和 PlyPlus 等库解析文本文件。它们都可以处理繁重的解析,如果简单的字符串操作不起作用,还可以使用正则表达式。