什么是 CSV 文件

CSV 文件(逗号分隔值文件)是一种纯文本文件,它使用特定的结构来排列表格数据。因为它是一个纯文本文件,所以只能包含实际的文本数据,换句话说就是可打印的 ASCII 或 Unicode 字符。

通常,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 文件,然后将其导入电子表格以分析数据、生成图表以进行演示或准备发布报告。

CSV 文件非常容易以编程方式处理。任何支持文本文件输入和字符串操作的语言(如 Python)都可以直接处理 CSV 文件。

CSV 库解析 CSV 文件

csv 库提供读取和写入 CSV 文件的功能。专为使用 Excel 生成的 CSV 文件开箱即用而设计,适应各种 CSV 格式。该 csv 库包含对象和其他代码,用于从 CSV 文件读取、写入和处理数据。

读取 CSV 文件

CSV 文件使用 Python 的内置open()函数作为文本文件打开,该函数返回一个文件对象。然后使用 reader 对象完成从 CSV 文件中的读取。

employee_birthday.txt

name,department,birthday month
John Smith,Accounting,November
Erica Meyers,IT,March

直接读取的方法。

import csv

with open('employee_birthday.txt') 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.')

字典方式读取的方法。

import csv

with open('employee_birthday.txt', mode='r') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'Column names are {", ".join(row)}')
            line_count  = 1
        print(f'\t{row["name"]} works in the {row["department"]} department, and was born in {row["birthday month"]}.')
        line_count  = 1
    print(f'Processed {line_count} lines.')

最终输出的结果是一样的。

Column names are name, department, birthday month
    John Smith works in the Accounting department, and was born in November.
    Erica Meyers works in the IT department, and was born in March.
Processed 3 lines.

CSV reader 参数

reader 对象可以通过指定附加参数来处理不同样式的 CSV 文件。

delimiter 指定用于分隔每个字段的字符,默认值为逗号 (‘,’)。

quotechar 指定用于包围包含分隔符的字段的字符,默认值为双引号 ( ’ " ')。

escapechar 指定用于转义分隔符的字符以防不使用引号,默认是没有转义字符。

employee_addresses.txt

name,address,date joined
john smith,1132 Anywhere Lane Hoboken NJ, 07030,Jan 4
erica meyers,1234 Smith Lane Hoboken NJ, 07030,March 2

此 CSV 文件包含三个字段:name、address 和 date joined,由逗号分隔。问题是 address 字段的数据还包含一个逗号来表示邮政编码。

思考一下这个应该怎么处理?

CSV 文件的写入

CSV 文件的写入可以使用 .write_row() 方法进行操作。

import csv

with open('employee_file.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'])

quotechar 用来包围含特殊字符的字段,排除歧义使用。

quoting的几种控制引号行为情况:

csv.QUOTE_NONNUMERIC) # 非数字加引号

csv.QUOTE_ALL # 所有字段加引号

csv.QUOTE_MINIMAL # 特殊字段加引号

csv.QUOTE_NONE # 都不加引号

字典方式写入。

import csv

with open('employee_file2.csv', mode='w') as csv_file:
    fieldnames = ['emp_name', 'dept', 'birth_month']
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'emp_name': 'John Smith', 'dept': 'Accounting', 'birth_month': 'November'})
    writer.writerow({'emp_name': 'Erica Meyers', 'dept': 'IT', 'birth_month': 'March'})

employee_file2.csv

emp_name,dept,birth_month
John Smith,Accounting,November
Erica Meyers,IT,March

使用 pandas 库解析 CSV 文件

pandas 是一个开源 Python 库,提供高性能的数据分析工具和易于使用的数据结构,可以共享数据、代码、分析结果、可视化和叙述性文本。

pandas 读取 CSV 文件

hrdata.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可以快速的读取。

import pandas
df = pandas.read_csv('hrdata.csv')
print(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读取数据时可以格式化日期格式。

import pandas
df = pandas.read_csv('hrdata.csv', index_col='Name', parse_dates=['Hire Date'])
print(df)
                Hire Date   Salary  Sick Days remaining
Name                                                   
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

pandas 写入 CSV 文件

读取到 pandas 的内容可以直接写入到新的 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('hrdata_modified.csv')

print(df)
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

以上就是Pandas对CSV文件读写操作详解的详细内容,更多关于Pandas读写CSV的资料请关注Devmax其它相关文章!

Pandas对CSV文件读写操作详解的更多相关文章

  1. ios – 如何从Core Data创建CSV文件(swift)

    我正在构建一个带有核心数据的应用程序,它们显示在tableView中.现在我想将这些数据导出到CSV文件,这样我就可以在windows上的excel中打开它.我搜索了很多,但没有找到正确的答案.有人可以帮助我或给我一个良好的解释或教程的链接?

  2. swift 3.1如何从CSV获取数组或字典

    我怎样才能在这种CSV文件中使用数据?或者我如何打印“内部”列的第2行值并将其分配给属性/实体?我有这种从excel文件转换为Numbers的文件,我想抓取每列的数据并使用它们.原始CSV文件以数字打开:我得到的控制台输出:使用这种方法:解决方案感谢JensMeder运用在viewDidLoad中你想要做的是将字符串分成行然后分成列.Swift已经为String结构提供了components方法.然后您可以通过以下方式访问任何值

  3. 数组 – 将.csv数据导入数组

    我在过去几年使用Objective-C.现在我正在尝试Xcode6beta4与迅速.我想导入一个.csv表单我的webserver到一个数组.我在Objective-C中的旧代码是:我怎么可以在Swift这样做?有最佳做法–推荐吗?有多个swift库可用:CSVImporter,它是一个适用于处理大型csv文件的异步解析器.SwiftCSV,它是一个用于OSX和iOS的简单CSV解析库.和CSwiftV,它是符合rfc4180规范的csv解析器,但根据作者,它全部在内存中,因此不适合大文件.

  4. 读取资源文件夹android中的CSV文件

    我正在开发netbeans的Android应用程序.我正在尝试使用opencsv读取CSV文件.当我将文件放在资源文件夹中并尝试从那里读取它时,在构建无效资源目录时出错.我应该在哪里存储csv文件,以便每次应用程序启动时都可以读取它?

  5. 是否可以远程托管Android应用程序中使用的资源,使其只能由我的应用程序使用?

    基本上我想要实现的是托管一个CSV文件,我的应用程序将检索并使用该文件作为填充某些表的数据源.CSV将使用最新数据进行更新,我设想应用程序每隔一段时间就会获得最新版本,以确保其中的数据是最新的.我的问题在于是否可以确保此远程CSV资源仅供我的应用程序使用?有没有其他方法可以确保我的csv数据源仅供我的应用程序使用?

  6. Pandas如何将表格的前几行生成html实战案例

    这篇文章主要介绍了Pandas如何将表格的前几行生成html实战案例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  7. 详解Python如何实现Excel数据读取和写入

    这篇文章主要为大家详细介绍了python如何实现对EXCEL数据进行读取和写入,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  8. pandas如何计算同比环比增长

    这篇文章主要介绍了pandas如何计算同比环比增长,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  9. python sklearn与pandas实现缺失值数据预处理流程详解

    对于缺失值的处理,主要配合使用sklearn.impute中的SimpleImputer类、pandas、numpy。其中由于pandas对于数据探索、分析和探查的支持较为良好,因此围绕pandas的缺失值处理较为常用

  10. Python使用pandas将表格数据进行处理

    这篇文章主要介绍了Python使用pandas将表格数据进行处理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部