栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas读写文件

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas读写文件

pandas 笔记009

目录
    • pandas 笔记009
      • 九、Pandas文件操作
        • 1.读
          • 1.1 read_csv()
          • 1.2 read_table()
          • 1.3 sep或delimiter(分隔符)
          • 1.4 skiprows(忽略跳过行数)
          • 1.5 header(设置列名)
          • 1.6 names(指定列名)
          • 1.7 index_col
          • 1.8 读取txt文件
        • 2.分块读取
          • 2.1 chunksize
          • 2.2 iterator
        • 3.将一个文件内容写到另一个文件

九、Pandas文件操作 1.读
import numpy as np
import pandas as pd
1.1 read_csv()

ex1.csv文件打开如下:

abcdmessage
1234hello
5678world
9101112python

函数read_csv :从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号

a1 = pd.read_csv('ex1.csv') #ex1.csv文件自带列名(第一行作为列索引值,行索引自动补充)
a1
    a	b	c	d	message
0	1	2	3	4	hello
1	5	6	7	8	world
2	9	10	11	12	python
1.2 read_table()

函数read_table : 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符("t")

a2 = pd.read_table('ex1.csv')
a2
	a,b,c,d,message
0	1,2,3,4,hello
1	5,6,7,8,world
2	9,10,11,12,python
1.3 sep或delimiter(分隔符)

参数sep或delimiter(分隔符) : 用于对行中各字段进行拆分的字符序列或正则表达式

a3 = pd.read_table('ex1.csv',delimiter=',')  # 或sep=','
a3
    a	b	c	d	message
0	1	2	3	4	hello
1	5	6	7	8	world
2	9	10	11	12	python
1.4 skiprows(忽略跳过行数)

参数skiprows : 需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始算起),默认skiprows=0

a4 = pd.read_csv('ex1.csv',skiprows=1)  #skiprows=1,跳过第一行(索引为0),skiprows=2,跳过第一和第二行,以此类推
a4
    1	2	3	4	hello
0	5	6	7	8	world
1	9	10	11	12	python
1.5 header(设置列名)

参数header : 用作列名的行号,默认header=0(第一行为列名),当header=None时,会自动给出行列索引而不是将原数据的行作为索引值,

ex2.csv如下:

1234hello
5678world
9101112python
b1 = pd.read_csv('ex2.csv') # 默认header=0,会将第一行作为列名
b1
	1	2	3	4	hello
0	5	6	7	8	world
1	9	10	11	12	python
b11 = pd.read_csv('ex2.csv',header=1)   # 设置第二行为列名,第一行的数据不会显示
b11
	5	6	7	8	world
0	9	10	11	12	python

使用header=None

b2 = pd.read_csv('ex2.csv',header=None)   # 另外自动给出行列名
b2
    0	1	2	3	4
0	1	2	3	4	hello
1	5	6	7	8	world
2	9	10	11	12	python
1.6 names(指定列名)

参数names : 可以指定列名

b3 = pd.read_csv('ex2.csv',names=['a','b','c','d','e'])
b3
	a	b	c	d	e
0	1	2	3	4	hello
1	5	6	7	8	world
2	9	10	11	12	python
1.7 index_col

参数index_col : 用作行索引的列编号或列名。可以是单个名称/数字或由多个名称/数字组成的列表(层次化索引)

index_col可以指定某一列作为行索引,例如下面代码指定ex2.csv文件的e列作为行索引:

b4 = pd.read_csv('ex2.csv',names=['a','b','c','d','e'],index_col='e') # 指定ex2.csv文件的第e列作为行索引
b4
	   a	b	c	d
e				
hello	1	2	3	4
world	5	6	7	8
python	9	10	11	12
c1 = pd.read_csv('csv_mindex.csv')
c1
    key1	key2	value1	value2
0	one	    a		1		2
1	one		b		3		4
2	one		c		5		6
3	one		d		7		8
4	two		a		9		10
5	two		b		11		12
6	two		c		13		14
7	two		d		15		16

index_col如果指定多个列名组成的列表会构成层次化索引

c2 = pd.read_csv('csv_mindex.csv',index_col=['key1','key2'])
c2
				value1	value2
key1	key2		
one		a		1		2
		b		3		4
		c		5		6
		d		7		8
two		a		9		10
		b		11		12
		c		13		14
		d		15		16
1.8 读取txt文件

ex3.txt文档内容如下:

open()读取

list(open('ex3.txt'))
['           A         B         Cn',
 'aaa -0.264438 -1.026059 -0.619500n',
 'bbb  0.927272  0.302904 -0.032399n',
 'ccc -0.264273 -0.386314 -0.217601n',
 'ddd -0.871858 -0.348382  1.100491']

使用read_table()读取

d1 = pd.read_table('ex3.txt')
d1
							A B C
0	aaa -0.264438 -1.026059 -0.619500
1	bbb 0.927272 0.302904 -0.032399
2	ccc -0.264273 -0.386314 -0.217601
3	ddd -0.871858 -0.348382 1.100491

使用分隔符

s 表示空白字符,包括但不限于空格、回车(r)、换行(n)、tab或者叫水平制表符(t)等

+ 是重复修饰符,表示它前面与它紧邻的表达式格式相匹配的字符串至少出现一个,上不封顶

s+ 意思就是至少有一个空白字符存在

d2 = pd.read_table('ex3.txt',sep='s+') 
d2
		A			B			C
aaa	-0.264438	-1.026059	-0.619500
bbb	0.927272	0.302904	-0.032399
ccc	-0.264273	-0.386314	-0.217601
ddd	-0.871858	-0.348382	1.100491
2.分块读取

主要是应用在数据量很大的文件

tr = pd.read_csv('agg_match_stats_1.csv')   #读取整个文件到内存中,如果文件很大会很慢
tr.head(10)   # 从内存存储的整个文件中取出10行

分块读取:

2.1 chunksize

通过参数chunksize每次读取文件的指定行(不重复)到内存中,可加快读取速度。

通过参数chunksize 可指定文件块的大小,可用于迭代。

f1 = pd.read_csv('agg_match_stats_1.csv',chunksize=10)   #每次读取文件的10行(不重复)到内存中
f1   # 可迭代对象TextFileReader

get_chunk() 不加参数默认读取10行,可指定

f1.get_chunk(6) 

第一次运行结果

第二次运行结果:从第一次结果往后迭代

查看get_chunk()得到的数据的数据类型,为Dataframe

print(type(f1.get_chunk())) 

2.2 iterator

iterator: 逐块读取文件,可加快读取速度。

f2 = pd.read_csv('agg_match_stats_1.csv',iterator=True) 
f2  # 可迭代对象TextFileReader 

f2.get_chunk(5)  #每次获取5行,不加参数默认读取整个文件

第一次运行结果

第二次运行结果:和chunksize的一样,从第一次往后迭代

3.将一个文件内容写到另一个文件
e1 = pd.read_csv('ex1.csv')
e1

ex1.csv文件如下:

abcdmessage
1234hello
5678world
9101112python
    a	b	c	d	message
0	1	2	3	4	hello
1	5	6	7	8	world
2	9	10	11	12	python

csv文件名.to_csv("csv文件名") :将一个文件内容写到另一个文件.
例如下面把ex1.csv文件的内容写入一个新的csv文件中。会在当前目录生成一个out1.csv的文件,内容是ex1.csv的内容(如上),但比原ex1.csv存储的文件内容多了行索引值(0,1,2)

e1.to_csv('out1.csv')  

out1.csv文件内容如下:

abcdmessage
01234hello
15678world
29101112python
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445476.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号