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'三列,每个数字或字符串用'|'分隔开