将表格型数据读取为DataFrame对象是pandas的重要特性,下表总结了部分函数
这些函数的可选参数主要有:
索引
可以将一或多个列作为返回的DataFrame,从文件或用户处获得列名
类型推断和数据转换
包括用户自定义的值转换和自定义的缺失值符号列表
日期时间解析
包括组合功能,也包括将分散在多个列上的日期和时间信息组合成结果中的单列
迭代
支持对大型文件的分块迭代
未清洗数据问题
跳过行、页脚、注释以及其他次要数据,比如逗号分隔千位的数字
这里我在本机的/Users/roarboil/Desktop/ 这一目录下存了一个csv文件如图:
我们使用Unix环境下的cat命令来查看该文件:
我们发现这个文件是由逗号分隔的,于是我们使用read_csv读入一个DataFrame
1 | df = pd.read_csv('/Users/roarboil/Desktop/1.csv') |
如果本身没有列名,可以选择自动分配列名或手动指定:
1 | df1 = pd.read_csv('/Users/roarboil/Desktop/1.csv' ,header=None) |
如果想要指定列作为返回DataFrame的索引,可以使用index_col方法(这里以message列作为索引为例)
1 | df2 = pd.read_csv('/Users/roarboil/Desktop/1.csv' ,names=['a','b','c','d','message'],index_col='message') |
如果想要形成一个分层索引,需要传入一个包含列序号或列名的列表
1 | df = pd.read_csv('/Users/roarboil/Desktop/1.csv' ,index_col=['key1','key2']) |
解析函数有很多附加函数来帮助处理各种各种异常文件格式,比如可以使用skiprows来跳行处理
可以使用na_values进行缺失值标识指定(也即人工指定进来什么数据表示该项数据缺失)
1 | df = pd.read_csv('/Users/roarboil/Desktop/1.csv' ,index_col=['key1','key2'],na_values=['5']) |
分块读入文本文件
如果只想读取一小部分行可以知名nrows
为了分块读入文件,可以指定chunksize作为每一块的行数
read_csv返回的TextParser对象允许根据上面指定的chunksize来便利每一个数据块,下面的示例程序遍历文件并对列key聚合获得计数值
1 | chunker = pd.read_csv('examples/ex6.csv',chunkersize=1000) |
将数据写入文本格式
可以使用DataFrame的to_csv方法将数据导出为逗号分隔的文件
1 | df = pd.read_csv('/Users/roarboil/Desktop/1.csv') |
也可以使用sep参数指定其他的分隔符
1 | df = pd.read_csv('/Users/roarboil/Desktop/1.csv') |
另外也可以使用na_rep对缺失值进行标注,用index=False和header=False来禁止写入行和列的标签
关于JSON数据和XML/HTML数据待用到时再作补充