从文本文件读取数据

法一:

使用read、readline、readlines读取数据

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


 file_name=open(r'E:\data analysis\test\test11.txt')
data=file_name.read()
print('data\n',data)
print('data',type(data)) file_name.seek(0)
data_line=file_name.readline()
print('data_line\n',data_line)
print('data_line',type(data_line)) file_name.seek(0)
data_lines=file_name.readlines()
print('data_lines\n',data_lines)
print('data_lines',type(data_lines))
data
ID var_1 var_2 var_3 var_4 var_5
7105262421 2 3 1 1.1 1.1.1
5535530756 2 3 1 1.1 1.1.1
9510454424 2 2 1 1.1 1.1.1
226526052 2 2 1 1.1 1.1.1
5706199107 2 2 0
7417958869 2 4 1 1.1 1.1.1
541746997 2 4 0
9309835887 2 4 1 1.1 1.1.1
6396162852 2 4 1 1.1 1.1.1
8865288990 2 4 1 1.1 1.1.1
487152048 2 4 0
2279987653 2 4 0 data <class 'str'>
data_line
ID var_1 var_2 var_3 var_4 var_5 data_line <class 'str'>
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 <class 'list'>

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

 import re
import numpy as np
x0=[];x1=[];x2=[];x3=[];x4=[];x5=[]
for data_s in data_lines:
s=re.split('\t|\n',data_s)
x0.append(s[0])
x1.append(s[1])
x2.append(s[2])
x3.append(s[3])
x4.append(s[4])
x5.append(s[5])
x0=np.array(x0).reshape(13,1)
x1=np.array(x1).reshape(13,1)
x2=np.array(x2).reshape(13,1)
x3=np.array(x3).reshape(13,1)
x4=np.array(x4).reshape(13,1)
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:小数点符号,默认为‘.’。
 import pandas as pd
data_csv=pd.read_csv(r'E:\data analysis\test\test1.csv')
print(data_csv)
 ID  var_1  var_2  var_3  var_4  var_5
0 7105262421 2 3 1.0 1.1 1.1.1
1 5535530756 2 3 1.0 1.1 1.1.1
2 9510454424 2 2 1.0 1.1 1.1.1
3 226526052 2 2 1.0 1.1 1.1.1
4 5706199107 2 2 NaN NaN 0
5 7417958869 2 4 1.0 1.1 1.1.1
6 541746997 2 4 NaN NaN 0
7 9309835887 2 4 1.0 1.1 1.1.1
8 6396162852 2 4 1.0 1.1 1.1.1
9 8865288990 2 4 1.0 1.1 1.1.1
10 487152048 2 4 NaN NaN 0
11 2279987653 2 4 NaN NaN 0
 import pandas as pd
data_txt=pd.read_csv(r'E:\data analysis\test\test11.txt',sep='\s+')
print(data_txt)
           ID  var_1  var_2  var_3  var_4  var_5
0 7105262421 2 3 1 1.1 1.1.1
1 5535530756 2 3 1 1.1 1.1.1
2 9510454424 2 2 1 1.1 1.1.1
3 226526052 2 2 1 1.1 1.1.1
4 5706199107 2 2 0 NaN NaN
5 7417958869 2 4 1 1.1 1.1.1
6 541746997 2 4 0 NaN NaN
7 9309835887 2 4 1 1.1 1.1.1
8 6396162852 2 4 1 1.1 1.1.1
9 8865288990 2 4 1 1.1 1.1.1
10 487152048 2 4 0 NaN NaN
11 2279987653 2 4 0 NaN NaN
  import pandas as pd
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的元素为nan
print(data_table)
        ID  var_1  var_2  var_3  var_4  var_5
0 5535530756 2 3.0 1.0 1.1 1.1.1
1 226526052 2 2.0 1.0 1.1 1.1.1
2 7417958869 2 NaN 1.0 1.1 1.1.1
3 9309835887 2 NaN 1.0 1.1 1.1.1
4 8865288990 2 NaN 1.0 1.1 1.1.1
5 2279987653 2 NaN NaN NaN 0

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

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

read_excel读取excel:

1 import pandas as pd
2 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_5
0 7105262421 2.0 3 1.0 1.1 1.1.1
1 5535530756 2.0 3 1.0 1.1 1.1.1
2 9510454424 2.0 2 1.0 1.1 1.1.1
3 226526052 2.0 2 1.0 1.1 1.1.1
4 5706199107 2.0 2 NaN NaN 0
5 7417958869 2.0 4 1.0 1.1 1.1.1
6 541746997 2.0 4 NaN NaN 0
7 9309835887 2.0 4 1.0 1.1 1.1.1
8 6396162852 2.0 4 1.0 1.1 1.1.1
9 8865288990 2.0 4 1.0 1.1 1.1.1
10 487152048 2.0 4 NaN NaN 0
11 2279987653 2.0 4 NaN NaN 0

使用read、readline、readlines和pd.read_csv、pd.read_table、pd.read_fwf、pd.read_excel获取数据的更多相关文章

  1. pd.read_csv() 、to_csv() 之 常用参数

    本文简单介绍一下read_csv()和 to_csv()的参数,最常用的拿出来讲,较少用的请转到官方文档看. 一.pd.read_csv() 作用:将csv文件读入并转化为数据框形式. pd.read ...

  2. pd.read_csv的header用法

    默认Header = 0: In [3]: import pandas as pd In [4]: t_user = pd.read_csv(r'C:\Users\Song\Desktop\jdd_d ...

  3. [Python Study Notes]pd.read_csv()函数读取csv文件绘图

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  4. pd.read_csv参数解析

    对pd.read_csv参数做如下解释: pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', n ...

  5. (转)pd.read_csv之OSError: Initializing from file failed的解决方案

    转:https://blog.csdn.net/funnyPython/article/details/78532102 rides = pd.read_csv(data_path)1 # OSErr ...

  6. PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键

    PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键 1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner ...

  7. python read readline readlines区别

    file 对象使用 open 函数来创建,下表列出了 file 对象常用函数read.readline.readlines区别: 1.从文件读取指定的字节数,size如果未给定或为负则读取所有. fi ...

  8. pd.read_csv操作读取分隔符csv和text文件

    pandas.read_csv可以读取CSV(逗号分割)文件.文本类型的文件text.log类型到DataFrame 1. pandas.read_csv常用参数整理 也支持文件的部分导入和选择迭代 ...

  9. python pd.read_csv/pd.read_table参数详解

随机推荐

  1. H3C配置路由器作为TFTP客户端

  2. RabbitMQ-Exchange交换器

    交换器分类 RabbitMQ的Exchange(交换器)分为四类: direct(默认) headers fanout topic 其中headers交换器允许你匹配AMQP消息的header而非路由 ...

  3. Trendalyzer is an information visualization software

    Trendalyzer is an information visualization software for animation of statistics that was initially ...

  4. delphi 子窗体最大化

    procedure TForm2.FormCreate(Sender: TObject);begin perform(WM_SIZE,SIZE_MAXIMIZED,0);end; http://blo ...

  5. lnmp一键安装,安装php时失败

    查看安装日志 直接cd进入根目录报错内容:configure: error: mcrypt.h not found. Please reinstall libmcrypt 解决办法如下#使用wget可 ...

  6. 《HelloGitHub》第 45 期

    兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...

  7. xcode无线调试

    前言: xcode9 以上才会有无线调试这个功能,换了一个type-c口的mac,公司的新电脑,但是公司不给配转接口,到某东看了一下,type-c口同时可以转化usb和VGA的要198,官网差不多50 ...

  8. spring boot 中事物的使用

    一.什么是事务? 事务,通俗的说就是,同时做多个事,要么全做,要么不做,也是其特性.举个例子来说,好比你在某宝.某东.某多上购物,在你提交订单的时候,库存也会相应减少,不可能是钱付了,库存不减少,或者 ...

  9. Java正则表达式学习与记录

    转载自:http://www.runoob.com/java/java-regular-expressions.html 正则表达式定义了字符串的模式,用于搜索.编辑或处理文本. 1.正则表达式中字符 ...

  10. JVM性能监测工具——VisualVM

    Java本身自带了有好几个jvm监测工具,其中jconsole和jvisualvm这两个工具具有图形化界面,可以监测到cpu.类.线程.堆等一些参数,而且具有远程监控的能力. 启动:打开cmd命令窗口 ...