Python读写CSV文件详解:csv库与pandas实战

月亮慢半拍
月亮慢半拍
发布时间:2026-10-14 | 4人浏览过
原创

本文详细介绍Python中读写CSV文件的两种主流方法。首先讲解使用内置csv库进行基础读写操作,包括列名解析与数据写入;随后介绍利用pandas库处理大规模数据的更高效方案,涵盖读取、列重命名及数据导出等高级功能。通过具体代码示例,帮助开发者掌握不同场景下的最佳实践。

CSV文件基础与格式说明

CSV(Comma-Separated Values)是一种纯文本格式,采用特定的结构来存储和排列表格数据。

一个标准的CSV文件内容通常呈现如下形态:

column 1 name,column 2 name, column 3 name first row data 1,first row data 2,first row data 3 second row data 1,second row data 2,second row data 3 ...

数据字段之间通过逗号进行分隔。通常情况下,第一行用于标识数据块的名称,即列名;随后的每一行则包含实际数据,其大小仅受限于文件本身的容量。

CSV文件通常由处理大量数据的程序生成。作为一种便捷的数据交换格式,它常用于从电子表格或数据库导出数据,以及在其他程序中导入或使用数据。例如,可以将数据挖掘程序的结果导出为CSV文件,随后导入电子表格中进行分析、生成演示图表或准备发布报告。

由于CSV是纯文本格式,因此极易通过编程方式处理。任何支持文本文件输入和字符串操作的语言(如Python)都可以直接读写CSV文件。

使用csv库读写文件

读取CSV文件内容

在Python中,可以使用内置的csv库来读取CSV文件。在编写读取程序之前,先创建一个名为a.csv的文件,其内容如下:

名字,部门,月份 John Smith,Accounting,November Erica Meyers,IT,March

文件创建完成后,即可开始编写读取该文件内容的程序代码。


import csv

with open('a.csv') as csv_file:
  csv_reader = csv.reader(csv_file,delimiter=',')
  line_count = 0

  for row in csv_reader:
    if line_count == 0:
      print(f'Column names are {", ".join(row)}')
      line_count += 1
    else:
      print(f'\t{row[0]} works in the {row[1]} department, and was born in {row[2]}.')
      line_count += 1
    print(f'Processed {line_count} lines.')

写入数据到CSV文件

在完成了读取内容的程序编写后,接下来编写一个用于写入数据的程序。我们将数据写入到b.csv文件中。


import csv

with open('b.csv', mode='w') as employee_file:
  employee_writer = csv.writer(employee_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

  employee_writer.writerow(['John Smith', 'Accounting', 'November'])
  employee_writer.writerow(['Erica Meyers', 'IT', 'March'])

使用pandas高效处理CSV

如果觉得使用csv库读写效率较低,或者编写的代码过于繁琐,下面介绍一种更高效的替代方法。

使用pandas库读取CSV

假设我们有一个名为c.csv的文件,其具体内容如下所示:

Name,Hire Date,Salary,Sick Days remaining Graham Chapman,03/15/14,50000.00,10 John Cleese,06/01/15,65000.00,8 Eric Idle,05/12/14,45000.00,10 Terry Jones,11/01/13,70000.00,3 Terry Gilliam,08/12/14,48000.00,7 Michael Palin,05/23/13,66000.00,8

使用pandas库读取上述CSV文件的方法如下:


import pandas
df = pandas.read_csv('hrdata.csv')
print(df)

# 输出的df

#       Name Hire Date  Salary Sick Days remaining
# 0 Graham Chapman 03/15/14 50000.0          10
# 1   John Cleese 06/01/15 65000.0          8
# 2    Eric Idle 05/12/14 45000.0          10
# 3   Terry Jones 11/01/13 70000.0          3
# 4  Terry Gilliam 08/12/14 48000.0          7
# 5  Michael Palin 05/23/13 66000.0          8

使用pandas库写入CSV

接下来,我们将带有新列名的数据写入一个新的CSV文件中:


import pandas
df = pandas.read_csv('hrdata.csv', 
      index_col='Employee', 
      parse_dates=['Hired'],
      header=0, 
      names=['Employee', 'Hired', 'Salary', 'Sick Days'])
df.to_csv('d.csv')

# d.csv文件内容

# Employee,Hired,Salary,Sick Days
# Graham Chapman,2014-03-15,50000.0,10
# John Cleese,2015-06-01,65000.0,8
# Eric Idle,2014-05-12,45000.0,10
# Terry Jones,2013-11-01,70000.0,3
# Terry Gilliam,2014-08-12,48000.0,7
# Michael Palin,2013-05-23,66000.0,8

掌握了CSV文件读取的基础知识后,处理导入数据时将更加从容。基本的Python csv库足以应对大多数CSV读取、处理和编写任务。若需处理海量数据,pandas库则提供了更快速且简便的处理功能。

以上就是Python读写CSV文件的详细内容,更多关于Python读写CSV文件的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表