python中read函数-python中with函数
发布时间:2023-02-10 22:26 浏览次数:次 作者:佚名
在python中读取文本文件
对于CSV和txt后缀的文本文件python中read函数,分别使用pandas模块中的read_csv函数和read_table函数
CSVread_csv
TXT
读表
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)
(共有17个参数,可以直接看下面的参数解释)
二、参数说明
filepath_or_buffer:文件路径,还可以是指定存储数据的网站链接
sep:指定原数据集中各变量之间的分隔符,默认为tab制表符
header:是否将原数据集中的第一行作为表头,默认是,并将第一行作为变量名称:如果原始数据中没有表头,该参数需要设置成None
names:如果原数据集中没有变量名称,这个可以用来给数据添加具体的变量名称,也就是列名
index _col :指定数据集中的某些列作为数据的行索引(标签)
usecols :指定要读取哪些变量名
dtype :为数据集中的每个变量设置不同的数据类型
converters :通过字典格式,为数据集中的某些变量设置转换函数
skiprows : 指定需要跳过原数据集的起始行数
skipfooter :指定需要跳过原数据集的末尾行数
nrows :指定读取的行数
na_values :指定原数据集中的哪些特征值为缺失值(默认将两个分隔符之间的空值视为缺失值)
skip_blank_lines :跳过空白行,默认为True
parse_dates:参数值为True时,则尝试解析数据框的行索引;参数为列表,则尝试解析对应的日期列;如果参数为嵌套列表,则将某些列合并为日期列;如果参数为字典,则解析对应的列(即字典中的值),并生成新的变量名(即字典中的键)
thousands :指定原数据集中的千分位符
comment : 指定注释符,在读取数据时,如果碰到行首指定的注释符,则跳过该行
encoding :为防止中文乱码,可以借助该参数解决(通常设置为“utf-8”或者“gbk”)
read_csv函数的参数完全一样,有一点不同:sep参数值的默认值
read_csvread_table
参数默认值为英文逗号“,”
参数的默认值为tab制表符
3 应用案例
有一个txt文件python中read函数,内容如下
2021年寒假留校过年的同学,带“!”的同学因临时变更选择回家
如有变化,及时报送
0014,多隆,男,河北石家庄人
0015,陈近南,男,福建漳州人
! 0016,韦小宝,男,江苏扬州人
0017,龙儿,女,神龙岛人
!0018,鳌拜,内蒙古呼和浩特人
数据来源于鹿鼎大学人事部
抄送给康熙
要求只读号码、姓名、性别、籍贯等,回家的不用读,实现如下效果
姓名性别出生地
0014
多伦
男性
河北石家庄
1个
0015
陈近南
男性
福建漳州人
2个
0017
龙二
女性
龙岛人
代码
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='!' #不读取“!”开头的数据行
)
在代码中
传递给names参数的多个值是通过列表结构实现的,即[]
传递给converters参数的值是通过字典结构实现的,即{key:value}
ps:如果运行时显示:ValueError: header must be integer or list of integers。 这意味着您将 header=None 写为 header="None"
另,txt文档内容纯属虚构
参考书《数据分析从入门到高级》(机械工业出版社)