Pandas 提供了读写 CSV 文件的方法。
CSV 是 Comma-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
:指示在输出文件中包含列名作为标题