机器学习pandas之数据IO笔记

pandas在进行数据存储与输出时会做一些相应的操作

1.*索引:将一个列或多个列读取出来构成DataFrame,其中涉及是否从文件中读取索引以及列名

2 *类型推断和数据转换:包括用户自定义的转换以及缺失值标记

3 *日期解析

4*迭代:针对大文件进行逐块迭代。这个是Pandas和Python原生的csv库的最大区别

5 *不规整数据问题:跳过一些行,或注释等等
 
 1 import pandas as pd
 2 import numpy as np
 3 
 4 pd.read_csv('ch04/ex1.csv')   # 它输出的是DataFrame
 5 pd.read_table('ch04/ex1.csv',sep=',')  # 它的效果和上一行一样
 6 
 7 pd.read_csv('ch04/ex2.csv',header=None,names=['a','b','c','d','msg'])
 8 #  它为读取的文件添加列索引
 9 
10 pd.read_csv('ch04/ex2.csv',header=None,
11                    names=['a','b','c','d','msg'],index_col=['msg','b'])
12 #  为文件添加列索引后,又将'msg','b'两列变为行索引
13 
14 pd.read_table('ch04/ex3.csv',sep='\s+')
15 #  文件中的分隔符用到正则表达式sep='\s+'
16 
17 pd.read_csv('ch04/ex5.csv',
18                     na_values={'message':['NA','NULL','foo'],'something':['two']})
19 #  读出的文件没有值的默认为NaN值,
20 #  na_values通过字典形式表示message与something中需要变为NaN值的一些位置
21 
22 pd.read_csv('ch04/ex6.csv',nrows=10)
23 #  表示只读取10行
24 
25 #  如果要取出每个索引出现的次数,可以利用chunksize
26 tr = pd.read_csv('ch04/ex6.csv',chunksize=1000)
27 #  先取出1000行
28 #  它返回<pandas.io.parsers.TextFileReader at 0x1b116b02780>支持迭代
29 result = pd.Series([])
30 for chunk in tr:
31     result = result.add(chunk['key'].value_counts(),fill_value=0)
32 #  add方法会为索引对应的数据不存在添加默认值,可以采用fill_value=0填充默认值
33 
34 result = result.sort_values(ascending=False)
35 result[:10]  # 取出前十大的数

往磁盘读入数据

 1 import pandas as pd
 2 import numpy as np
 3 
 4 df = pd.read_csv('ch04/ex5.csv')
 5 df.to_csv('ch04/ex5_out.csv',index=False)  
 6 # 如果没有index=False,读取的文件与源文件有差异,给源文件加了索引
 7 # index=False指定不写索引值
 8 
 9 df.to_csv('ch04/ex5_out.csv',index=False,
10               header=None,columns=['b','c','message'],sep='|')
11 # header=None,不写列标签,只写'b','c','message'三列,每个数字或字符串用'|'分隔开

猜你喜欢

转载自www.cnblogs.com/yang901112/p/11425934.html