python⽂件的读写read_csv常⽤参数
⽂章⽬录
filepath_or_buffer
filepath_or_buffer是ad_csv的默认第⼀个参数,⽤于指定读取的⽂件的路径,⼀般直接给值
# 等价于pd.read_csv(filepath_or_buffer='data/ex1.csv')
header
指定作为标题的⾏,默认为0,如果不需要可以指定为None
header 的值可以是⼀个⾏数(数字),也可以是⼀个列表,如[0,1,3],将有多个标题⾏
但是要注意的是,当header指定某⼀⾏时,如果这⼀⾏不是第⼀⾏,那么该⾏前⾯的数据会被忽略。如果指定的是⼀个如[1,3]的列表时,那么不仅前⾯的⾏会被忽略,之间的⾏也会被忽略
举两个例⼦:
数据:
1、读取第2⾏作为标题⾏,第⼀⾏将会被忽略掉
result = pd.read_csv('', header=1,delim_whitespace=True)
result
获得结果:
2、读取多⾏作为标题⾏,不仅仅上⾯的⾏被忽略的,之间的⾏也被忽略了
result = pd.read_csv('', header=[1,3],delim_whitespace=True)
result
获得结果:
sep
指定的分隔符,默认为 ‘,’ 逗号
如果⽂件是⽤tab和多个空格分隔的,那么可以设置参数为sep=’\s+’
sep=’\s+'作⽤是: s+可以将tab和多个空格都当成⼀样的分隔符
举个例⼦:现在有⼀个⽂本⽂件它的分隔符是tab或者是空格
这个时候使⽤默认的sep读取出来的结果会有错误,所以需要另外设置sep的值,这⾥只要设置sep=’\s+'就能正常的读取该⽂件
result = pd.read_csv('', sep='\s+')
result
获得结果:
delimiter
备选分隔符,功能与sep相同,如果指定该参数那么sep将失效,使⽤上⾯sep的例⼦,在原本的基础上再指定delimiter参数,获得的结果⽆法正常读取我们想要的内容,说明sep失去了效果
result = pd.read_csv('', sep='\s+', delimiter=',')
result
python怎么读csv数据获得结果:
delim_whitespace
指定空格是否作为分隔符使⽤,等价于sep=’\s+’,如果delim_whitespace =True,那么sep和delimiter都将失效,还是⽤上⾯的例⼦,获得的结果可以发现sep和delimiter并没有对结果造成影响,说明它们失效了
result = pd.read_csv('', sep=',', delimiter=',',delim_whitespace=True)
result
获得结果
names
⽤于设置标题⾏,如果读取的⽂件中没有标题⾏,这时可以设置⾃定义的列名
举个栗⼦
数据:
result = pd.read_csv('data/ex2.csv', header=0,names=['a', 'b', 'c', 'd', 'message'])
result
获得结果:
index_col
指定某⼀列或多列作为⾏索引,如果给定的值是⼀个列编号或者⼀个列名,那么该列将作为⾏索引,如果指定的是⼀个序列,那么该序列中的多列将作为⾏索引
继续使⽤上⾯names的例⼦,从结果上可以看到message列已经作为⾏索引使⽤了
result = pd.read_csv('data/ex2.csv', header=0,names=['a', 'b', 'c', 'd', 'message'], index_col=4)
result
获得结果
usecols
指定需要加载的列,如果我们只是要加载⼀个⽂件中的某些列⽽不是全部的时候,可以使⽤usecols参数,可以加快加载速度以及降低内存的消耗
usecols接收⼀个序列,然后将加载序列中指定的列,序列可以是列编号也可以是列名
还是使⽤上⾯names的例⼦:
result = pd.read_csv('data/ex2.csv', header=0,names=['a', 'b', 'c', 'd', 'message'], usecols=['b','c','message'])
result
获得结果
squeeze
当squeeze=True时,如果⽂件只包含⼀列的话,那么就返回⼀个Series
举个栗⼦:
数据:
result = pd.read_csv('',squeeze=True)
result
获得结果
prefix
如果设置了header=None没有标题⾏时,那么默认的标题⾏将会是0,1,2…等,设置perfix参数可以给这些默认的标题⾏添加⼀个前缀举个例⼦
result = pd.read_csv('data/ex9.csv',header=None,prefix='第')
result
获得结果
dtype
指定每⼀列的数据类型,⽐如{‘a’: np.float64, ‘b’: np.int32}等
举个例⼦
数据:
result = pd.read_csv('data/ex1.csv',dtype={'a':float}) # 或者dtype={0:float}
result
获得结果
engine
可以通过engine参数指定使⽤的分析引擎,可以选择C或者是python,C引擎快但是Python引擎功能更加完备。
使⽤⽅法:
engine=‘c’ 或者 engine=‘python’
converters
该参数可以给指定的列进⾏定制,产⽣我们需要的效果
举个例⼦
数据:
def change(n):
return str(n)+'个'
result = pd.read_csv('data/ex1.csv',converters={0:change})
#⽤lambda表达式可以直接写成{0:lambda n:str(n)+'个'}
result
获得结果
skiprows
需要忽略的⾏数(从⽂件开始处算起),或需要跳过的⾏号列表(从0开始)。
举个例⼦,可以看到本来将作为标题⾏的第⼀⾏被忽略了,⽽第⼆⾏成为了标题⾏
数据:
result = pd.read_csv('data/ex1.csv', skiprows=1)
result
获得结果
skipfooter
与skiprows⼀样,也是忽略⼀些⾏,但是skiprows是从头开始的,⽽skipfooter是从尾开始的
注意: 如果engine参数设置了’c’引擎,那么该参数不能使⽤,如果使⽤会报the ‘c’ engine does not support skipfooter的错误举个例⼦,还是⽤上⾯skiprows的数据,可以从结果中看到,数据的最后⼀⾏被忽略了
result = pd.read_csv('data/ex1.csv', skipfooter=1)
result
获得结果
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论