利用python进行数据分析(其三)
数据加载、存储与文件格式
输入输出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据,利用Web API的操作网络资源。
读写文本格式的数据
pandas提供一些用于表格型数据读取为DataFrame对象的函数,其中对其进行总结为以下:
将文本数据转换为DataFrame这些函数的选项可以划分为以下几个大类:
- 索引:将一个或多个列当做返回的DataFrame处理,以及是否从文件、用户获
取列名。 - 类型推断和数据转换:包括用户定义值的转换、和自定义的缺失值标记列表
等。 - 日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合成结果
中的单个列。 - 迭代:支持对大文件进行逐块迭代。
- 不规整数据问题:跳过一些行、页脚、注释或其他一些不重要的东西(比如由
成千上万个逗号隔开的数值数据)
其中对pandas.read_csv 和pandas.read_table列出常用选项:
逐块读取文本文件
如果只想读取几行(避免读取整个文件),通过nrows进行指定即可:
In [36]: pd.read_csv('examples/ex6.csv', nrows=5)
Out[36]:
one two three four key
0 0.467976 -0.038649 -0.295344 -1.824726 L
1 -0.358893 1.404453 0.704965 -0.200638 B
2 -0.501840 0.659254 -0.421691 -0.057688 G
3 0.204886 1.074134 1.388361 -0.982404 R
4 0.354628 -0.133116 0.283763 -0.837063 Q
要逐块读取文件,可以指定chunksize(行数):
In [874]: chunker = pd.read_csv('ch06/ex6.csv', chunksize=1000)
In [875]: chunker
Out[875]: <pandas.io.parsers.TextParser at 0x8398150>
chunker = pd.read_csv('examples/ex6.csv', chunksize=1000)
tot = pd.Series([])
for piece in chunker:
tot = tot.add(piece['key'].value_counts(), fill_value=0)
tot = tot.sort_values(a