Pandas—read_csv()/read_table()文本文件的读取

对于CSV及txt后缀的文本文件,分别使用pandas模块中的read_csv函数和read_table函数

文件类型

函数名称

CSV

read_csv()

txt

read_table()

 

1. read_table函数的参数

read_table(filepath_or_buffer , sep='\t' , header='infer' ,

names=None , index _col=None , usecols=None , dtype=None ,  

converters=None ,  skiprows=None , skipfooter=None , nrows=None ,

na_values=None , skip_blank_lines=True , parse_dates=False ,

thousands= None , comment=None , encoding=None)

 

2. 参数解释

序号

参数名称

描述

1

filepath_or_buffer

文件路径、指定存储数据的URL或者文件型对象

2

sep

指定原数据集中分割每行字段的分隔符,默认为tab制表符

3

header

是否将原数据集中的第一行作为表头,默认是0,将第一行作为变量名称;如果原始数据中没有表头,该参数需要设置成None。

4

names

如果原数据集中没有列名,这个可以用来给数据添加列名。和header=None一起使用。

5

index _col

指定数据集中的某些列(字段)作为数据的行索引(标签)

6

usecols

指定要读取哪些列(字段)的数据。

7

dtype

为数据集中的每列设置不同的数据类型

8

converters

通过字典格式,为数据集中的某些列(字段)设置转换函数

9

skiprows

指定需要跳过原数据集的起始行数

10

skipfooter

指定需要跳过原数据集的末尾行数

11

nrows

指定从文件开头处读入的行数

12

na_values

指定原数据集中的哪些特征值为缺失值(默认将两个分隔符之间的空值视为缺失值)

13

skip_blank_lines

跳过空白行,默认为True

14

parse_dates

尝试将数据解析为datetime,默认为False。参数值为True时,则尝试解析数据框的行索引;参数为列表,则尝试解析对应的日期列;如果参数为嵌套列表,则将某些列合并为日期列;如果参数为字典,则解析对应的列(即字典中的值),并生成新的变量名(即字典中的键)

15

thousands

指定原数据集中的千分位符 ,例如','或'.'

16

comment

指定注释符,在读取数据时,如果碰到行首指定的注释符,则跳过该行

17

encoding

为防止中文乱码,可以借助该参数解决(通常设置为“utf-8”或者“gbk”)

18

chunksize

用于迭代的块大小

19

date_parser

用于解析日期的函数

 

read_csv函数的参数与之完全一致,有一个不同点:sep参数值的默认值

文件类型

函数名称

默认分隔符

CSV

read_csv()

参数的默认值为英文状态下的逗号“,”

txt

read_table()

参数的默认值为tab制表符

 

3 应用案例

有一个txt文件,内容如下:

 2021年寒假留校过年的同学,带“!”的同学因临时变更选择回家

 如有变化,及时报送

 0014,多隆,男,河北石家庄人

 0015,陈近南,男,福建漳州人

 ! 0016,韦小宝,男,江苏扬州人

 0017,龙儿,女,神龙岛人

 !0018,鳌拜,内蒙古呼和浩特人

 数据来源于鹿鼎大学人事部

 抄送给康熙

 

要求只读取编号、姓名、性别、籍贯等内容,且回家的不用读,实现如下效果:

 

id

name

gender

native place

0

14

多隆

河北石家庄人

1

15

陈近南

福建漳州人

2

17

龙儿

神龙岛人


代码 

import pandas as pd

#用read_table函数读取文本文件的数据

data=pd.read_table(r'D:Desktop\新建文本文档.txt',    #文件路径,前面的filepath_or_buffer符可以省略掉      

         sep=',',   #指定数据中变量之间的分隔符,注意这里是中文的逗号 ,

         header=None ,    #不需要将原来的数据中的第一行读作表头

         names=['id','name','gender','native place'] ,  #重新为各列起变量名称

         converters={'id':str} ,   #将ID转换为字符串,以免开头的00消失

         skiprows=2 ,          #跳过开头的两行数据

         skipfooter=2,         #跳过末尾的两行数据

         comment='!'        #不读取“!”开头的数据行

         )

 

posted @ 2021-05-27 14:26  业余砖家  阅读(3562)  评论(0编辑  收藏  举报