博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用read、readline、readlines和pd.read_csv、pd.read_table、pd.read_fwf、pd.read_excel获取数据...
阅读量:5844 次
发布时间:2019-06-18

本文共 5995 字,大约阅读时间需要 19 分钟。

从文本文件读取数据

法一:

使用read、readline、readlines读取数据

  • read([size]):从文件读取指定的字节数。如果未给定或为负值,则去取全部。返回数据类型为字符串(将所有行合并为一个字符串)。
  • readline([size]):从文件读取整行,包括‘\n’字符。如果给定的是一个负数或未给定则读取整行,给定的是一个正数,则返回指定大小的字节数。返回数据类型为字符串。
  • readlines([size]):从文件读取所用行,并返回列表。如果给定的是正数则读取一行,负数或未给定则读取整个文件。返回数据类型为列表(每行内容作为列表中的一个对象)。
size 负数 未给定 正数
read 读取全部 读取全部 size字节数
readline 1整行 1整行 size字节数
readlines 读取全部 读取全部  1整行

 

例:
 
1 file_name=open(r'E:\data analysis\test\test11.txt') 2 data=file_name.read() 3 print('data\n',data) 4 print('data',type(data)) 5  6 file_name.seek(0) 7 data_line=file_name.readline() 8 print('data_line\n',data_line) 9 print('data_line',type(data_line))10 11 file_name.seek(0)12 data_lines=file_name.readlines()13 print('data_lines\n',data_lines)14 print('data_lines',type(data_lines))
data ID    var_1    var_2    var_3    var_4    var_57105262421    2    3    1    1.1    1.1.15535530756    2    3    1    1.1    1.1.19510454424    2    2    1    1.1    1.1.1226526052    2    2    1    1.1    1.1.15706199107    2    2            07417958869    2    4    1    1.1    1.1.1541746997    2    4            09309835887    2    4    1    1.1    1.1.16396162852    2    4    1    1.1    1.1.18865288990    2    4    1    1.1    1.1.1487152048    2    4            02279987653    2    4            0data 
data_line ID var_1 var_2 var_3 var_4 var_5data_line
data_lines ['ID\tvar_1\tvar_2\tvar_3\tvar_4\tvar_5\n', '7105262421\t2\t3\t1\t1.1\t1.1.1\n', '5535530756\t2\t3\t1\t1.1\t1.1.1\n', '9510454424\t2\t2\t1\t1.1\t1.1.1\n', '226526052\t2\t2\t1\t1.1\t1.1.1\n', '5706199107\t2\t2\t\t\t0\n', '7417958869\t2\t4\t1\t1.1\t1.1.1\n', '541746997\t2\t4\t\t\t0\n', '9309835887\t2\t4\t1\t1.1\t1.1.1\n', '6396162852\t2\t4\t1\t1.1\t1.1.1\n', '8865288990\t2\t4\t1\t1.1\t1.1.1\n', '487152048\t2\t4\t\t\t0\n', '2279987653\t2\t4\t\t\t0\n']data_lines

使用readlines返回的是每行数据做为一个对象的列表,可将数据进行转换以满足后续的处理。

1 import re 2 import numpy as np 3 x0=[];x1=[];x2=[];x3=[];x4=[];x5=[] 4 for data_s in data_lines: 5     s=re.split('\t|\n',data_s) 6     x0.append(s[0]) 7     x1.append(s[1]) 8     x2.append(s[2]) 9     x3.append(s[3])10     x4.append(s[4])11     x5.append(s[5])12 x0=np.array(x0).reshape(13,1)13 x1=np.array(x1).reshape(13,1)14 x2=np.array(x2).reshape(13,1)15 x3=np.array(x3).reshape(13,1)16 x4=np.array(x4).reshape(13,1)17 x5=np.array(x5).reshape(13,1)

法二:

使用pandas 的read_csv、read_table、read_fwf、read_excel读取数据

read_csv/read_table/read_fwf/read_excel的部分参数:

  • path:表示位置的字符串。
  • sep:分隔符,默认为','。
  • header:用作列名的行号,默认为0(第一行),如果没有header行,需设置header=None。
  • index_col:用作行索引的列编号或列名,可以是单个名称或数组,也可是由多个名称或数组组成的列表。
  • names:用于结果的列名列表,结合header=None使用。
  • skiprows:要忽略的行数(从文件开始处算起),或需要跳过(即不忽略)的行号列表(从0开始)。
  • na_value:规定什么样的值是NA 值。
  • nrows:需要读取的行数。
  • thousand:千位符符号,如‘,’或‘.’。
  • decimal:小数点符号,默认为‘.’。
1 import pandas as pd2 data_csv=pd.read_csv(r'E:\data analysis\test\test1.csv')3 print(data_csv)
ID  var_1  var_2  var_3  var_4  var_50   7105262421      2      3    1.0    1.1  1.1.11   5535530756      2      3    1.0    1.1  1.1.12   9510454424      2      2    1.0    1.1  1.1.13    226526052      2      2    1.0    1.1  1.1.14   5706199107      2      2    NaN    NaN      05   7417958869      2      4    1.0    1.1  1.1.16    541746997      2      4    NaN    NaN      07   9309835887      2      4    1.0    1.1  1.1.18   6396162852      2      4    1.0    1.1  1.1.19   8865288990      2      4    1.0    1.1  1.1.110   487152048      2      4    NaN    NaN      011  2279987653      2      4    NaN    NaN      0

 

1 import pandas as pd2 data_txt=pd.read_csv(r'E:\data analysis\test\test11.txt',sep='\s+')3 print(data_txt)
ID  var_1  var_2  var_3  var_4  var_50   7105262421      2      3      1    1.1  1.1.11   5535530756      2      3      1    1.1  1.1.12   9510454424      2      2      1    1.1  1.1.13    226526052      2      2      1    1.1  1.1.14   5706199107      2      2      0    NaN    NaN5   7417958869      2      4      1    1.1  1.1.16    541746997      2      4      0    NaN    NaN7   9309835887      2      4      1    1.1  1.1.18   6396162852      2      4      1    1.1  1.1.19   8865288990      2      4      1    1.1  1.1.110   487152048      2      4      0    NaN    NaN11  2279987653      2      4      0    NaN    NaN
1  import pandas as pd2  data_table=pd.read_table(r'E:\data analysis\test\test1.csv',sep=',',skiprows=[1,3,5,7,9,11],na_values={2:4})  #读取1,3,5,7,9,11行,第二列的中值4的元素为nan3  print(data_table)
ID  var_1  var_2  var_3  var_4  var_50  5535530756      2    3.0    1.0    1.1  1.1.11   226526052      2    2.0    1.0    1.1  1.1.12  7417958869      2    NaN    1.0    1.1  1.1.13  9309835887      2    NaN    1.0    1.1  1.1.14  8865288990      2    NaN    1.0    1.1  1.1.15  2279987653      2    NaN    NaN    NaN      0

read_fwf读取表格或固定宽度格式的文本行到数据框:

1 import pandas as pd2 data_fwf=pd.read_fwf(r'E:\data analysis\test\test2.txt',widths=[6,6,6],names=['var1','var2','var3'])   #widths:由整数组成的列表,表示每列的宽度3 print(data_fwf)
var1    var2    var30  1a2b3c  4d5e6f  7g8h9i1  1a2b3c  4d5e6f  7g8h9i2  1a2b3c  4d5e6f  7g8h9i3  1a2b3c  4d5e6f  7g8h9i4  1a2b3c  4d5e6f  7g8h9i5  1a2b3c  4d5e6f  7g8h9i

read_excel读取excel:

1 import pandas as pd2 data_exc=pd.read_excel(r'E:\data analysis\test\test1.xlsx',sheet_name='Sheet2',dtype={ 'ID':str,'var_1':float}) #sheet_name为表的名称,dtype用于更改列的数据类型 3 print(data_exc)
ID  var_1  var_2  var_3  var_4  var_50   7105262421    2.0      3    1.0    1.1  1.1.11   5535530756    2.0      3    1.0    1.1  1.1.12   9510454424    2.0      2    1.0    1.1  1.1.13    226526052    2.0      2    1.0    1.1  1.1.14   5706199107    2.0      2    NaN    NaN      05   7417958869    2.0      4    1.0    1.1  1.1.16    541746997    2.0      4    NaN    NaN      07   9309835887    2.0      4    1.0    1.1  1.1.18   6396162852    2.0      4    1.0    1.1  1.1.19   8865288990    2.0      4    1.0    1.1  1.1.110   487152048    2.0      4    NaN    NaN      011  2279987653    2.0      4    NaN    NaN      0

 

 

转载于:https://www.cnblogs.com/niniya/p/8697101.html

你可能感兴趣的文章
2014年云计算五大趋势
查看>>
我的友情链接
查看>>
Java新手看招 常用开发工具介绍
查看>>
Windows Server 2008更改用户的环境变量和系统环境变量
查看>>
SQL语句学习
查看>>
初次安装系统注意选项
查看>>
mysql的SQL性能监控
查看>>
使用Dockerfile构建镜像
查看>>
大学生IT博客大赛开赛 相关报道
查看>>
tcpdump使用方法总结
查看>>
What is Cluster Aware Updating in Windows Server 2012?
查看>>
Linux命令详解 -- tar
查看>>
Java.net.URL学习总结
查看>>
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径。...
查看>>
进老男孩的自我介绍和决心书
查看>>
Leetcode Construct Binary Tree from Inorder and Postorder Traversal
查看>>
线上Linux服务器运维安全策略经验分享
查看>>
Django实现组合搜索的方法示例
查看>>
Android一些问题的解决方案
查看>>
Clion 常用快捷键
查看>>