添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

用Pandas在Python中读写CSV文件

这篇文章展示了如何使用Python的Pandas库来读写CSV文件。要读取一个CSV文件,需要使用Pandas库的read_csv()方法。

Python Python pandas pandas 读写CSV文件 Python读写CSV Pandas读写CSV
发表日期:2023-01-08

虽然你可以在 Python 中使用内置的 open() 函数来读写CSV文件,或者使用专门的 csv 模块,你也可以使用 Pandas

在这篇文章中,你将看到如何使用Python的 Pandas库 来读写CSV文件。

s a n g ni a o . c o m

什么是CSV文件?

让我们快速回顾一下什么是 CSV文件 - 只不过是一个简单的文本文件,遵循一些格式化惯例。然而,它是存储表格数据的最常见、最简单、最容易的方法。这种格式通过遵循特定的结构将表格分为行和列来排列。正是这些行和列包含了你的数据。

每一行都有一个新的行终止,以开始下一行。同样一个分隔符,通常是一个逗号,将每一行的列分开。

例如,我们可能有一个看起来像这样的表格:

State Capital Population
City,State,Capital,Population
Philadelphia,Pennsylvania,No,1.581 Million
Sacramento,California,Yes,0.5 Million
New York,New York,No,8.623 Million
Austin,Texas,Yes,0.95 Million
Miami,Florida,No,0.463 Million

虽然名字(逗号分隔值)本身使用逗号作为分隔符,但你也可以使用其他分隔符(分离器),如分号( ; )。表格的每一行都是CSV文件的一个新行,它是表示表格数据的一种非常紧凑和简洁的方式。

现在,让我们看一下 read_csv() 函数。

使用Pandas读取和写入CSV文件

Pandas是一个非常强大和流行的数据分析和操作的框架。Pandas最引人注目的特点之一是它能够读写各种类型的文件,包括CSV和Excel。你可以使用 read_csv() to_csv() 等函数在Pandas中有效而轻松地操作CSV文件。

https://www.sangnia o .com/

安装Pandas

在使用Pandas之前,我们必须先安装它。让我们使用 pip :

   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S

另外,你也可以从在线资源中读取CSV文件,比如GitHub,只需将资源的URL传递给 read_csv() 函数即可。让我们从GitHub仓库中读取同样的CSV文件,不要先下载到我们的本地机器上:

import pandas as pd
titanic_data = pd.read_csv(r'https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv')
print(titanic_data.head())

这也导致了:

   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S
[5 rows x 12 columns]

默认情况下, read_csv() 方法使用CSV文件的第一行作为列标题。有时,这些标题可能有奇怪的名字,你可能想使用自己的标题。你可以在读取文件后设置列头,只需给 DataFrame 实例的 columns 字段分配另一个列表,或者你可以在读取CSV文件时首先设置列头。

让我们定义一个列名列表,并使用这些名字来代替CSV文件中的名字:

            Id  Survived Passenger Class  ...    Price  Cabin   Station
0  PassengerId  Survived          Pclass  ...     Fare  Cabin  Embarked
1            1         0               3  ...     7.25    NaN         S
2            2         1               1  ...  71.2833    C85         C
3            3         1               3  ...    7.925    NaN         S
4            4         1               1  ...     53.1   C123         S

嗯,现在我们已经有了我们的自定义标题,但是CSV文件的_第一行,也就是原来用来设置列名的那一行也包含在 DataFrame 中。我们想跳过这一行,因为它对我们不再有任何价值。

读取CSV时跳过行数

让我们通过使用 skiprows 参数来解决这个问题:

'Station'] titanic_data = pd.read_csv(r'E:\Datasets\titanic.csv', names=col_names, skiprows=[0]) print(titanic_data.head())

现在,让我们运行这段代码:

   Id  Survived  Passenger Class  ...    Price Cabin  Station
0   1         0                3  ...   7.2500   NaN        S
1   2         1                1  ...  71.2833   C85        C
2   3         1                3  ...   7.9250   NaN        S
3   4         1                1  ...  53.1000  C123        S
4   5         0                3  ...   8.0500   NaN        S

运作得很好! skiprows 参数接受一个你想跳过的行的列表。你也可以跳过,例如 0,4,7 ,如果你愿意的话:

titanic_data = pd.read_csv(r'E:\Datasets\titanic.csv', names=col_names, skiprows=[0, 4, 7])
print(titanic_data.head(10))

这将导致 DataFrame 没有我们之前看到的一些行:

   Id  Survived  Passenger Class  ...    Price Cabin  Station
0   1         0                3  ...   7.2500   NaN        S
1   2         1                1  ...  71.2833   C85        C
2   3         1                3  ...   7.9250   NaN        S
3   5         0                3  ...   8.0500   NaN        S
4   6         0                3  ...   8.4583   NaN        Q
5   8         0                3  ...  21.0750   NaN        S
6   9         1                3  ...  11.1333   NaN        S
7  10         1                2  ...  30.0708   NaN        C
8  11         1                3  ...  16.7000    G6        S
9  12         1                1  ...  26.5500  C103        S

请记住,跳过的行发生在 DataFrame 完全形成之前,所以你不会错过 DataFrame 本身的任何索引,尽管在这种情况下,你可以看到 Id 字段(从CSV文件导入)缺少ID 4 7

https://www.sangnia o .com/

你也可以决定完全删除标题,这将导致一个 DataFrame 只有 0...n 个标题列,通过设置 header 参数为 None :

   0   1   2                                                  3       4   ...  7                 8        9 
0   1   0   3                            Braund, Mr. Owen Harris    male  ...   0         A/5 21171   7.2500
1   2   1   1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  ...   0          PC 17599  71.2833
2   3   1   3                             Heikkinen, Miss. Laina  female  ...   0  STON/O2. 3101282   7.9250
3   4   1   1       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  ...   0            113803  53.1000
4   5   0   3                           Allen, Mr. William Henry    male  ...   0            373450   8.0500

指定定界符

如前所述,你最终可能会遇到一个CSV文件,它实际上并没有使用逗号来分隔数据。在这种情况下,你可以使用 sep 参数来指定其他定界符:

to_csv() 写CSV文件

同样 DataFrame 是表格式的。将 DataFrame 变成CSV文件就像将CSV文件变成 DataFrame 一样简单 - 我们在 DataFrame 实例上调用 write_csv() 函数。

https://www.sangnia o .com/

当把 DataFrame 写入CSV文件时,你也可以使用 columns 参数来改变列名,或者通过 sep 参数指定分隔符。如果你不指定这两个参数,你最终会得到一个标准的逗号分隔值文件。

让我们来玩玩这个:

import pandas as pd
cities = pd.DataFrame([['Sacramento', 'California'], ['Miami', 'Florida']], columns=['City', 'State'])
cities.to_csv('cities.csv')

在这里,我们做了一个简单的 DataFrame ,包含两个城市和它们各自的州。然后,我们使用 to_csv() 并提供文件名,将数据保存到一个CSV文件中。

这将导致在你正在运行的脚本的工作目录中产生一个新的文件,其中包括:

import pandas as pd
cities = pd.DataFrame([['Sacramento', 'California'], ['Miami', 'Florida']], columns=['City', 'State'])
cities.to_csv('cities.csv', index=False)

现在,这导致了一个文件,其中包含:

import pandas as pd
cities = pd.DataFrame([['Sacramento', 'California'], ['Miami', 'Florida']], columns=['City', 'State'])
new_column_names = ['City_Name', 'State_Name']
cities.to_csv('cities.csv', index=False, header=new_column_names)

我们做了一个 new_header 列表,包含了不同的列值。然后,使用 header 参数,我们设置了这些,而不是原来的列名。这就产生了一个 cities.csv ,其内容如下:

import pandas as pd
cities = pd.DataFrame([['Sacramento', 'California'], ['Miami', 'Florida']], columns=['City', 'State'])
cities.to_csv('cities.csv', index=False, sep=';')

这将产生一个 cities.csv 文件,其中包括:

import pandas as pd
cities = pd.DataFrame([['Sacramento', 'California'], ['Miami', 'Florida'], ['Washington DC', pd.NA]], columns=['City', 'State'])
cities.to_csv('cities.csv', index=False, na_rep='Unknown')

这里,我们有两个有效的城市 - 州对,但是 Washington DC 缺少它的州。如果我们运行这段代码,将产生一个 cities.csv ,内容如下:

这篇文章展示了如何使用 Python Pandas 库来读写 CSV文件 。要读取一个CSV文件,需要使用Pandas库的 read_csv() 方法。在读取CSV文件时,你也可以通过 read_csv() 方法的 names 属性传递自定义的头文件名。最后,要使用Pandas写一个CSV文件,你首先要创建一个Pandas DataFrame对象,然后在DataFrame上调用 to_csv 方法。


版权声明:本文为桑鸟网博主「波靖仔」的原创文章,转载请附上原文出处链接及本声明。

本文标题:用Pandas在Python中读写CSV文件

本文地址:https://news.sangniao.com/p/2388353129