python读取数据文件夹_python读取数据文件:pandas包详解

pandas包是一个高效的文件读取工具,适用于txt,excel,等数据格式的文件,具有很强的自动识别功能。

pandas.read_csv可以读取CSV(逗号分割)文件、文本类型的文件text、log类型到DataFrame,下面是pandas.read_csv常用参数整理

参数filepath_or_buffer :

可以是URL,可用URL类型包括:http, ftp, s3和文件。对于多文件正在准备中本地文件读取。

实例1:实现图片中文件的读取,注意图片中的所有输入基于英文输入下得到,返回DataFrame文件

SouthEast

In [1]: import pandas as pd

#读取out.log文件,其他的参数默认

In [2]: out = pd.read_csv('out.log')

In [3]: out

Out[3]:

book kook

0 joke2 dddd

1 fang3 NaN

2 test1 NaN

3 test2 NaN

4 test3 NaN

5 1997/10/2 NaN

实例2:读取股票数据csv文件,返回DataFrame文件

In [4]: stock = pd.read_csv('000777.csv')

In [5]: stock

Out[5]:

date code closing high low opening pre_closing zde \

0 2017/1/20 '000777 21.17 21.29 20.90 20.90 20.86 0.31

1 2017/1/19 '000777 20.86 21.14 20.82 21.12 21.12 -0.26

2 2017/1/18 '000777 21.12 21.44 21.09 21.40 21.37 -0.25

3 2017/1/17 '000777 21.37 21.49 20.75 21.17 21.15 0.22

4 2017/1/16 '000777 21.15 22.50 20.28 22.50 22.53 -1.38

5 2017/1/13 '000777 22.53 22.88 22.43 22.71 22.85 -0.32

6 2017/1/12 '000777 22.85 23.53 22.75 23.41 23.51 -0.66

参数sep:

如果不指定参数,则会尝试使用逗号分隔。分隔符长于一个字符并且不是‘\s+’,将使用python的语法分析器。并且忽略数据中的逗号。正则表达式例子:’\r\t’。

In [6]: a = pd.read_csv('out.log',sep = '\s')

C:/Anaconda3/Scripts/ipython-script.py:1: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.

if __name__ == '__main__':

#设定空值作为分隔符,','不会分割每一行的数据

In [7]: a

Out[7]:

book,kook

0 joke2,dddd

1 fang3

2 test1

3 test2

4 test3

5 1997/10/2

#空值的设定两种方式:' ' or '\s'

In [9]: a = pd.read_csv('out.log',sep = ' ')

In [10]: a

Out[10]:

book,kook

0 joke2,dddd

1 fang3

2 test1

3 test2

4 test3

5 1997/10/2

参数delimiter :

定界符,备选分隔符(如果指定该参数,则sep参数失效)

In [13]: a = pd.read_csv('out.log',sep = ', ',delimiter='o')

#此时sep = ','设定失效

In [14]: a

Out[14]:

b Unnamed: 1 k,k Unnamed: 3 k

0 j ke2,dddd NaN NaN NaN

1 fang3 NaN NaN NaN NaN

2 test1 NaN NaN NaN NaN

3 test2 NaN NaN NaN NaN

4 test3 NaN NaN NaN NaN

5 1997/10/2 NaN NaN NaN NaN

参数delim_whitespace :

指定空格(例如’ ‘或者’ ‘)是否作为分隔符使用,等效于设定sep=’\s+’。如果这个参数设定为True那么delimiter 参数失效。

In [20]: a = pd.read_csv('out.log',delim_whitespace = True)

In [21]: a

Out[21]:

book,kook

0 joke2,dddd

1 fang3

2 test1

3 test2

4 test3

5 1997/10/2

参数header :

指定行数用来作为列名,数据开始行数。如果文件中没有列名,则默认为0【第一行数据】,否则设置为None。如果明确设定 header = 0 就会替换掉原来存在列名。header参数可以是一个list例如:[0,1,3],这个list表示将文件中的这些行作为列标题(意味着每一列有多个标题),介于中间的行将被忽略掉。注意:如果skip_blank_lines=True 那么header参数忽略注释行和空行,所以header=0表示第一行数据而不是文件的第一行。

In [22]: a = pd.read_csv('out.log',delim_whitespace = True,header = None)

In [23]: a

Out[23]:

0

0 book,kook

1 joke2,dddd

2 fang3

3 test1

4 test2

5 test3

6 1997/10/2

参数names :

用于结果的列名列表,如果数据文件中没有列标题行,就需要执行 header=None。names属性在header之前运行默认列表中不能出现重复,除非设定参数mangle_dupe_cols=True。

In [32]: a = pd.read_csv('out.log',names='ko')

In [33]: a

Out[33]:

k o

0 book kook

1 joke2 dddd

2 fang3 NaN

3 test1 NaN

4 test2 NaN

5 test3 NaN

6 1997/10/2 NaN

参数index_col :

用作行索引的列编号或者列名,如果给定一个序列则有多个行索引。

In [45]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=0)

#指定第一列作为行索引

In [46]: a

Out[46]:

XX1

XX0

book kook

joke2 dddd

fang3 NaN

test1 NaN

test2 NaN

test3 NaN

1997/10/2 NaN

In [47]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1)

#指定第二列作为行索引

In [48]: a

Out[48]:

XX0

XX1

kook book

dddd joke2

NaN fang3

NaN test1

NaN test2

NaN test3

NaN 1997/10/2

参数usecols:

返回一个数据子集,该列表中的值必须可以对应到文件中的位置(数字可以对应到指定的列)或者是字符传为文件中的列名。例如:usecols有效参数可能是 [0,1,2]或者是 [‘foo’, ‘bar’, ‘baz’]。使用这个参数可以加快加载速度并降低内存消耗。

参数prefix:

在没有列标题时,也就是header设定为None,给列添加前缀。例如:添加prefix= ‘X’ 使得列名称成为 X0, X1, …

In [38]: a = pd.read_csv('out.log',header=None,prefix='XX')

In [39]: a

Out[39]:

XX0 XX1

0 book kook

1 joke2 dddd

2 fang3 NaN

3 test1 NaN

4 test2 NaN

5 test3 NaN

6 1997/10/2 NaN

参数dtype:

每列数据的数据类型。例如 {‘a’: np.float64, ‘b’: np.int32}

In [49]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1,dtype={'XX0':str})

In [50]: a

Out[50]:

XX0

XX1

kook book

dddd joke2

NaN fang3

NaN test1

NaN test2

NaN test3

NaN 1997/10/2

In [51]: a['XX0'].values

Out[51]: array(['book', 'joke2', 'fang3', 'test1', 'test2', 'test3', '1997/10/2'], dtype=object)

In [52]: a['XX0'].values[0]

Out[52]: 'book'

In [53]: type(a['XX0'].values[0])

Out[53]: str

参数skipinitialspace:

忽略分隔符后的空白(默认为False,即不忽略).

参数skiprows :

需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)。

In [54]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1,skiprows= 1)

#略去第二行的数据

In [55]: a

Out[55]:

XX0

XX1

dddd joke2

NaN fang3

NaN test1

NaN test2

NaN test3

NaN 1997/10/2

参数nrows :

需要读取的行数(从文件头开始算起)。

In [56]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1,skiprows= 1,nrows=4)

In [57]: a

Out[57]:

XX0

XX1

dddd joke2

NaN fang3

NaN test1

NaN test2

参数na_values :

一组用于替换NA/NaN的值。如果传参,需要制定特定列的空值。默认为‘1.#IND’, ‘1.#QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘nan’`.

参数keep_default_na:

如果指定na_values参数,并且keep_default_na=False,那么默认的NaN将被覆盖,否则添加

参数na_filter:

是否检查丢失值(空字符串或者是空值)。对于大文件来说数据集中没有空值,设定na_filter=False可以提升读取速度。

参数skip_blank_lines :

如果为True,则跳过空行;否则记为NaN。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值