Pandas CSV

Pandas 提供了读写 CSV 文件的方法。

CSVComma-Separated Values 的缩写。它是一种流行的用于存储表格数据的格式,其中每一行代表一个记录,列由分隔符(通常是逗号)分隔。

例如,CSV 文件的内容可能如下所示:

Employee ID,First Name,Last Name,Department,Position,Salary
101,John,Doe,Marketing,Manager,50000
102,Jane,Smith,Sales,Associate,35000
103,Michael,Johnson,Finance,Analyst,45000
104,Emily,Williams,HR,Coordinator,40000

读取 CSV 文件

在 Pandas 中,read_csv() 函数允许我们将 CSV 文件中的数据读取到 DataFrame 中。它会自动检测逗号并将数据解析到相应的列中。

以下是使用 Pandas 读取 CSV 文件的示例:

import pandas as pd

# read csv file df = pd.read_csv('data.csv', header = 0)
print(df)

输出

   Employee ID First Name Last Name Department     Position  Salary
0          101       John       Doe  Marketing      Manager   50000
1          102       Jane     Smith      Sales    Associate   35000
2          103    Michael   Johnson    Finance      Analyst   45000
3          104      Emily  Williams         HR  Coordinator   40000

上面的代码读取了 data.csv 文件的内容,并创建了一个名为 df 的 DataFrame,其中包含 CSV 文件中的数据。

这里,header = 0 将第一行设置为 DataFrame 的标题。

data.csv 文件的内容与介绍部分提供的 CSV 文件内容相同。

注意: 要使上面的代码正常工作,data.csv 文件应存在于当前目录中。如果文件位于其他目录,则需要提供文件的完整路径。

例如,如果 data.csv 文件位于 csv_files 文件夹中,则应将路径 './csv_files/data.csv' 指定为:

df = pd.read_csv('./csv_files/data.csv', header = 0)

read_csv() 语法

Pandas 中 read_csv() 的语法是:

df = pd.read_csv(
    filepath_or_buffer,
    sep=',',
    header=0,
    names=['col1', 'col2', 'col3'],
    index_col='col1',
    usecols=['col1', 'col3'],
    skiprows=[1, 3],
    nrows=100,
    skipinitialspace=True
)

这里,

  • filepath_or_buffer:表示包含要读取的 CSV 数据的路径或缓冲区对象
  • sep(可选):指定 CSV 文件中使用的分隔符
  • header(可选):指示用作标题或列名的行号
  • names(可选):要分配给 DataFrame 的列名列表
  • index_col(可选):指定用作 DataFrame 索引的列
  • usecols(可选):要读取并包含在 DataFrame 中的列列表
  • skiprows(可选):用于在读取 CSV 文件时跳过特定行
  • nrows(可选):设置从 CSV 文件读取的最大行数
  • skipinitialspace(可选):确定是否跳过每个字段中分隔符后面的任何空格

这些是 read_csv() 函数一些常用的参数。除 filepath_or_buffer 外,所有这些参数都是可选的。read_csv() 还有许多其他可选参数。

要了解更多信息,请参阅官方文档 read_csv()


示例:带参数的 read_csv()

假设我们有一个名为 data.csv 的 CSV 文件,其内容如下:

23, 'Hello', 45.6
56, 'World', 78.9
89, 'Foo', 12.3
34, 'Bar', 56.7

现在,让我们将此 CSV 文件加载到 DataFrame 中。

import pandas as pd

# read csv file with some arguments df = pd.read_csv('data.csv', header = None, names = ['col1', 'col2', 'col3'], skiprows = 2)
print(df)

输出

   col1    col2  col3
0    89   'Foo'  12.3
1    34   'Bar'  56.7

在此示例中,我们使用 read_csv() 方法读取了一个 CSV 文件。我们在读取文件时指定了一些参数,以便以适当的格式加载所需数据。

这里,

  • header = None:表示文件没有标题行
  • names = ['col1', 'col2', 'col3']:将列名分配为 'col1''col2''col3'
  • skiprows = 2:跳过前两行

写入 CSV 文件

我们使用 read_csv() 将数据从 CSV 文件读取到 DataFrame 中。

Pandas 还提供了 to_csv() 函数,用于将 DataFrame 中的数据写入 CSV 文件。

让我们看一个例子。

import pandas as pd

# create a dictionary
data = {'Name': ['John', 'Alice', 'Bob'],
        'Age': [25, 30, 35],
        'City': ['New York', 'London', 'Paris']}

# create a dataframe from the dictionary
df = pd.DataFrame(data)

# write dataframe to csv file df.to_csv('output.csv', index=False)

输出

Name,Age,City
John,25,New York
Alice,30,London
Bob,35,Paris

这里,上面的代码将 DataFrame df 写入 output.csv 文件。index=False 参数用于排除 CSV 文件中的索引标签。

注意: 上面的代码将在当前目录中创建一个名为 output.csv 的新文件(除非在文件路径中指定了其他目录)。

如果当前目录中已存在 output.csv 文件,则运行此代码将用 DataFrame 的新内容覆盖现有文件。


to_csv() 语法

Pandas 中 to_csv() 的语法是:

df.to_csv(
    path_or_buf,
    sep=',',
    header=True,
    index=False,
    mode='w',
    encoding=None,
    quoting=None,
    line_terminator='\n',
)

这里,

  • path_or_buf:表示将 DataFrame 保存为 CSV 文件的路径或缓冲区对象
  • sep(可选):指定输出 CSV 文件中使用的分隔符
  • header(可选):指示是否在输出 CSV 文件中包含标题行
  • index(可选):确定是否在输出 CSV 文件中包含索引列
  • mode(可选):指定打开输出文件的模式
  • encoding(可选):设置写入 CSV 文件时使用的字符编码
  • quoting(可选):确定包含特殊字符的字段的引用行为
  • line_terminator(可选):指定在输出 CSV 文件中用于终止行的字符序列

这些是 to_csv() 函数一些常用的参数。除 path_or_buf 外,所有这些参数都是可选的。to_csv() 还可以使用许多其他可选参数。

要了解更多信息,请参阅官方文档 to_csv()


示例:带参数的 to_csv()

import pandas as pd

# create dataframe
data = {'Name': ['Tom', 'Nick', 'John', 'Tom'],
        'Age': [20, 21, 19, 18],
        'City': ['New York', 'London', 'Paris', 'Berlin']}
df = pd.DataFrame(data)

# write to csv file df.to_csv('output.csv', sep = ';', index = False, header = True)

输出

Name;Age;City
Tom;20;New York
Nick;21;London
John;19;Paris
Tom;18;Berlin

在此示例中,我们使用 to_csv() 方法将 DataFrame 写入 CSV 文件 'output.csv'。我们使用了一些参数将必要的数据以所需的格式写入文件。

这里,

  • sep = ';':将分隔符指定为 ';'
  • index = False:指示不在输出文件中包含索引列
  • header = True:指示在输出文件中包含列名作为标题

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战