首先,确保你的系统中已安装pandas,并且使用的是Python 3。
假设我们需要处理一个名为sample.csv的CSV文件。
加载CSV文件 要使用pandas读取CSV文件,我们将使用read_csv函数,如下所示:
import pandas as pddf = pd.read_csv('sample.csv')print(df)
执行的输出将如下所示:
name job scoreid1 'Pete Houston' 'Software Engineer' 922 'John Wick' 'Assassin' 953 'Bruce Wayne' 'Batman' 994 'Clark Kent' 'Superman' 95
该命令将以整齐的方式输出CSV文件的内容。
指定分隔符 CSV文件不一定使用逗号(,)作为字段分隔符,它可以是任何字符,比如\t、|等。
read_csv函数中有一个选项可以帮助加载具有特定字段分隔符的CSV文件。、 sep的别名是delimiter。结果输出将是相同的。
df = pandas.read_csv('data/sample.csv', sep='\t')
输出结果将是相同的。
df = pandas.read_csv('data/sample.csv', delimiter='\t')
分隔符可以是一个字符序列。
df = pandas.read_csv('data/sample.csv', sep='||')
控制表头行
CSV文件可能没有表头行,如果在这种情况下执行脚本:
df = pandas.read_csv('data/sample.csv')
输出看起来很有趣。
1 'Pete Houston' 'Software Engineer' 920 2 'John Wick' 'Assassin' 951 3 'Bruce Wayne' 'Batman' 992 4 'Clark Kent' 'Superman' 95
pandas会假设第一行是表头。 代码 为此,我们可以传递header=None选项告诉pandas这个CSV文件没有表头行。
df = pandas.read_csv('data/sample.csv', header=None)
并且我们得到了这个输出。
0 1 2 30 1 'Pete Houston' 'Software Engineer' 921 2 'John Wick' 'Assassin' 952 3 'Bruce Wayne' 'Batman' 993 4 'Clark Kent' 'Superman' 95
由于我们没有指定任何表头,pandas使用整数值来索引表头行。
df = pandas.read_csv('data/sample.csv', names=['id', 'name', 'job', 'score'])
我们还可以通过names=[]选项为每列设置名称。
id name job score0 1 'Pete Houston' 'Software Engineer' 921 2 'John Wick' 'Assassin' 952 3 'Bruce Wayne' 'Batman' 993 4 'Clark Kent' 'Superman' 95
它将显示预期的输出。 代码 设置索引列 从输出中可以看出一个问题。最左边的第一列是pandas生成的自动索引列。我们可以通过index_col=选项将其从DataFrame中排除。
df = pandas.read_csv('data/sample.csv', header=None, names=['id', 'name', 'job', 'score'], index_col=0) df = pandas.read_csv('data/sample.csv', header=None, names=['id', 'name', 'job', 'score'], index_col=['id'])
您可以使用列索引值或列名序列来创建索引列。两者的结果是相同的。
name job score id1 'Pete Houston' 'Software Engineer' 922 'John Wick' 'Assassin' 953 'Bruce Wayne' 'Batman' 994 'Clark Kent' 'Superman' 95
跳过一些行
要在读取CSV时跳过一些行,您可以使用skiprows=N,其中N是要从文件开头跳过的行数。
df = pandas.read_csv('data/sample.csv', names=['id', 'name', 'job', 'score'], skiprows=1)
限制处理行数 如果您只对处理某些行感兴趣,可以使用nrows=N,其中N是要处理的行数。
df = pandas.read_csv('data/sample.csv', names=['id', 'name', 'job', 'score'], nrows=2)
当然,您可以结合使用skiprows和nrows来处理从特定位置开始的文件,并限制处理的行数。
代码
# df = pandas.read_csv('data/sample.csv', names=['id', 'name', 'job', 'score'], skiprows=1, nrows=2)
处理大型CSV文件
在某些情况下,CSV文件可能非常大。为了处理这样的大文件,我们需要将CSV文件分成多个块并逐个处理它们。
在pandas中可以通过使用chunksize=选项来进行块处理。
for df_chunk in pandas.read_csv('data/sample.csv', names=['id', 'name', 'job', 'score'], chunksize=1): print(df_chunk)
产生这个输出。
id name job score0 1 'Pete Houston' 'Software Engineer' 92id name job score1 2 'John Wick' 'Assassin' 95id name job score2 3 'Bruce Wayne' 'Batman' 99id name job score3 4 'Clark Kent' 'Superman' 95
关于from_csv()
如果您阅读任何关于使用pandas读取CSV文件的教程,它们可能会使用from_csv函数。然而,根据pandas官方文档的指示,这个函数已经被弃用。因此,建议改用read_csv代替。
结论 因此,我已经向您介绍了如何在pandas中读取CSV文件的简短教程,以及常用的参数。