Pandas对CSV文件读写操作详解

目录
  • 什么是 CSV 文件
  • CSV 库解析 CSV 文件
    • 读取 CSV 文件
    • CSV reader 参数
    • CSV 文件的写入
  • 使用 pandas 库解析 CSV 文件
    • pandas 读取 CSV 文件
    • pandas 写入 CSV 文件

什么是 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的资料请关注我们其它相关文章!

(0)

相关推荐

  • python读写数据读写csv文件(pandas用法)

    python中数据处理是比较方便的,经常用的就是读写文件,提取数据等,本博客主要介绍其中的一些用法.Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能. 一.pandas读取csv文件 数据处理过程中csv文件用的比较多. import pandas as pd data = pd.read_csv('F:/Zhu/test/test.csv') 下面看一下pd.read_csv常用的参数: panda

  • python用pandas读写和追加csv文件

    目录 csv文件 一.创建csv文件 二.读写csv文件 1.基础python 2.pandas 三.追加csv文件 1.基础python 2.pandas 总结 csv文件 CSV文件是最常用的一个文件存储方式.逗号分隔值(Common-Separated Values,CSV)文件以纯文本形式存储表格数据(注:分隔字符也可以是其他字符).纯文本说明该文件是一个字符序列,不包含必须像二进制数字那样被解读的数据. CSV文件由任意数目记录组成,记录间以某种换行符分隔:每条记录由若干字段组成,字段

  • Pandas操作CSV文件的读写实现方法

    (1).导库 import pandas as pd from pandas import Series (2).读取csv文件的两种方式 #读取csv文件的两种方式 f = open('E:/建模/第5周/data/ex1.csv') #方法一 df = pd.read_csv(f) print(df) f.close f = open('E:/建模/第5周/data/ex1.csv') #方法二,必须指定分隔符为',',否则会读取失败 df = pd.read_table(f,sep=','

  • Pandas读写CSV文件的方法示例

    读csv 使用pandas读取 import pandas as pd import csv if name == '__main__': # header=0--表示csv文件的第一行默认为dataframe数据的行名称, # index_col=0--表示使用第0列作为dataframe的行索引, # squeeze=True--表示如果文件只包含一列,则返回一个序列. file_dataframe = pd.read_csv('../datasets/data_new_2/csv_file

  • Pandas对CSV文件读写操作详解

    目录 什么是 CSV 文件 CSV 库解析 CSV 文件 读取 CSV 文件 CSV reader 参数 CSV 文件的写入 使用 pandas 库解析 CSV 文件 pandas 读取 CSV 文件 pandas 写入 CSV 文件 什么是 CSV 文件 CSV 文件(逗号分隔值文件)是一种纯文本文件,它使用特定的结构来排列表格数据.因为它是一个纯文本文件,所以只能包含实际的文本数据,换句话说就是可打印的 ASCII 或 Unicode 字符. 通常,CSV 文件的结构由其名称给出,使用逗号分

  • Go语言学习笔记之文件读写操作详解

    目录 文件写 文件读 小结 文件操作比较多,分为几篇来写吧.首先是文件的读写,在平时的工程化操作中使用最多. 文件写 样例代码如下 package main import ( "bufio" "fmt" "io" "os" ) //写文件 func DoWriteFile() error { _filePath := "./test.txt" _file, _err := os.OpenFile(_file

  • Java Zip文件读写操作详解

    输入流(读取): ZipInputStream是一种FileInputStream流,它可以直接读取Zip压缩包的内容: ┌───────────────────┐│    InputStream    │└───────────────────┘          ▲          │┌───────────────────┐│ FilterInputStream │└───────────────────┘          ▲          │┌──────────────────

  • IOS 文件读写操作详解及简单实例

    iPhone 文件读写操作 1,写文件操作 - (IBAction)btnWrite:(id)sender { //创建文件管理器 NSFileManager *fileManager = [NSFileManager defaultManager]; //获取路径 //参数 要获取的哪种路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSSt

  • C++文件读写操作详解

    目录 一.读写文本文件 1.1 写文件 1.2读文件 二.读写二进制文件 2.1 写文件 2.2 读文件 一.读写文本文件 1.1 写文件 写文件步骤如下: 包含头文件 #include <fstream> 创建流对象 ofstream ofs; 打开文件 ofs.open("文件路径",打开方式); 写数据 ofs << "写入的数据"; 关闭文件 ofs.close(); 文件打开方式: 打开方式 解释 ios::in 为读文件而打开文件

  • Node.js Streams文件读写操作详解

    Node.js 天生异步和事件驱动,非常适合处理 I/O 相关的任务.如果你在处理应用中 I/O 相关的操作,你可以利用 Node.js 中的流(stream).因此,我们先具体看看流,理解一下它们是怎么简化 I/O 操作的吧. 流是什么 流是 unix 管道,让你可以很容易地从数据源读取数据,然后流向另一个目的地. 简单来说,流不是什么特别的东西,它只是一个实现了一些方法的 EventEmitter .根据它实现的方法,流可以变成可读流(Readable),可写流(Writable),或者双向

  • java进行文件读写操作详解

    直接上代码,有详细注释,有图解,相信你懂得! 复制代码 代码如下: package day14; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.

  • JAVA文件读写操作详解

    目录 一.读文件BufferedInputStream 二.写文件BufferedOutputStream 三.实际应用场景 总结 一.读文件BufferedInputStream BufferedInputStream必须传入一个InputStream(一般是FileInputStream) 常用方法: 从该输入流中读取一个字节 public int read(); 从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中. public int read(byte[] b,in

  • Python Pandas读写txt和csv文件的方法详解

    目录 一.文本文件 1. read_csv() 2. to_csv() 一.文本文件 文本文件,主要包括csv和txt两种等,相应接口为read_csv()和to_csv(),分别用于读写数据 1. read_csv() 格式代码: pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False

  • 对python for 文件指定行读写操作详解

    1.os.mknod("test.txt") #创建空文件 2.fp = open("test.txt",w) #直接打开一个文件,如果文件不存在则创建文件 3.关于open 模式: 详情: w:以写方式打开, a:以追加模式打开 (从 EOF 开始, 必要时创建新文件) r+:以读写模式打开 w+:以读写模式打开 (参见 w ) a+:以读写模式打开 (参见 a ) rb:以二进制读模式打开 wb:以二进制写模式打开 (参见 w ) ab:以二进制追加模式打开 (

随机推荐