使用read、readline、readlines和pd.read_csv、pd.read_table、pd.read_fwf、pd.read_excel获取数据
从文本文件读取数据
法一:
使用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获取数据的更多相关文章
- pd.read_csv() 、to_csv() 之 常用参数
本文简单介绍一下read_csv()和 to_csv()的参数,最常用的拿出来讲,较少用的请转到官方文档看. 一.pd.read_csv() 作用:将csv文件读入并转化为数据框形式. pd.read ...
- 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 ...
- [Python Study Notes]pd.read_csv()函数读取csv文件绘图
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- pd.read_csv参数解析
对pd.read_csv参数做如下解释: pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', n ...
- (转)pd.read_csv之OSError: Initializing from file failed的解决方案
转:https://blog.csdn.net/funnyPython/article/details/78532102 rides = pd.read_csv(data_path)1 # OSErr ...
- PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键
PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键 1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner ...
- python read readline readlines区别
file 对象使用 open 函数来创建,下表列出了 file 对象常用函数read.readline.readlines区别: 1.从文件读取指定的字节数,size如果未给定或为负则读取所有. fi ...
- pd.read_csv操作读取分隔符csv和text文件
pandas.read_csv可以读取CSV(逗号分割)文件.文本类型的文件text.log类型到DataFrame 1. pandas.read_csv常用参数整理 也支持文件的部分导入和选择迭代 ...
- python pd.read_csv/pd.read_table参数详解
随机推荐
- activeMQ的两个默认端口8161和61616的区别
activeMQ默认配置下启动会启动8161和61616两个端口,其中8161是mq自带的管理后台的端口,61616是mq服务默认端口 . 8161是后台管理系统,61616是给java用的tcp端口 ...
- P1020 从大到小排序
题目描述 给你n个整数,请你按照从大到小的顺序输出它们. 输入格式 输入的第一行包含一个整数 \(n(1 \le n \le 10^3)\) ,用于表示元素的个数. 输入的第二行包含 \(n\) 个整 ...
- D3.js力导向图中新增节点及新增关系连线示例
大家在使用D3.js中的力导向图时,基本都会遇到动态增加节点及连线的需求,这里记录一下我的实现方式. 话不多说,先放代码: <!DOCTYPE html> <html lang=&q ...
- 5.29 SD省队培训D1
5.29 SD省队培训D1 自闭的一天 T1 梦批糼 先咕一咕(两天之内一定补上) T2 等你哈苏德 继续咕(一星期之内补上) T3喜欢最最痛 四十分做法: 首先,我们发现同一个点加两条额外边是一件非 ...
- 2018-8-13-WPF-使用-Edge-浏览器
title author date CreateTime categories WPF 使用 Edge 浏览器 lindexi 2018-8-13 15:33:5 +0800 2018-06-01 1 ...
- Python 多组输入
#基于Python2.7 #若是想Python做到和C++中while(scanf()!=EOF)一样的多组输入效果,可以如实例所示书写 #实例实现了多组输入,计算A+B+C并输出的任务 while ...
- Scala的正则表达式
想使用scala的正则表达式,需要首先导入 import scala.util.matching.Regex 然后就可以使用了,实例如下: val pattern = new Regex(" ...
- vs2015编译zlib静态库步骤
ZLIB静态库的编译 下载ZLIB源码 ZLib官网下载或者GitHub上直接 clone 下来即可 www.zlib.net 截至目前最新版本1.2.1.1本 如下图我选择从官网下载 下载完以后解压 ...
- 「学习笔记」 FHQ Treap
FHQ Treap FHQ Treap (%%%发明者范浩强年年NOI金牌)是一种神奇的数据结构,也叫非旋Treap,它不像Treap zig zag搞不清楚(所以叫非旋嘛),也不像Splay完全看不 ...
- Spring中常见的设计模式——代理模式
一.代理模式的应用场景 生活中的中介,黄牛,等一系列帮助甲方做事的行为,都是代理模式的体现.代理模式(Proxy Pattern)是指为题对象提供一种代理,以控制对这个对象的访问.代理对象在客户端和目 ...