接下来要着重介绍pandas的输入输出对象,输入输出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据,利用Web API操作网络资源。
读写文本格式的数据
read_csv和read_table可能会用到的多:

我将大致介绍一下这些函数在将文本数据转换为DataFrame时所用到的一些技术。这些函数的选项可以划分为以下几个大类:
* 索引:将一个或多个列当做返回的DataFrame处理,以及是否从文件、用户获取列名。
* 类型推断和数据转换:包括用户定义值的转换、缺失值标记列表等。
* 日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合成结果中的单个列。
* 迭代:支持对大文件进行逐块迭代。
* 不规整数据问题:跳过一些行、页脚、注释或其他一些不重要的东西(比如由成千上万个逗号隔开的数值数据)
类型推断(type inference)是这些函数中最重要的功能之一,也就是说,你不需要指定列的类型到底是数值、整数、布尔值,还是字符串。日期和其他自定义类型的处理需要多花点工夫才行。首先我们来看一个以逗号分隔的(CSV)文本文件
In [1]: from pandas import Series,DataFrame
In [2]: import pandas as pd
In [3]: import numpy as np
In [4]: !type ex1.csv
a,b,c,d,message
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
由于该文件以逗号分隔,所以我们可以使用read_csv将其读入一个DataFrame
这里的type用的是Windows系统将文本的原始内容打印到屏幕上,如果您使用UNIX shell命令,cat也可以达到同样的效果。
In [7]: df=pd.read_csv('ex1.csv')
In [8]: df
Out[8]:
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
也可以用read_table,但是需要指定分隔符
In [9]: pd.read_table('ex1.csv',sep=',')
Out[9]:
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
并不是所有文件都有标题行。看看下面这个文件
In [10]: !type ex2.csv
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
读入该文件的办法有两个。你可以让pandas为其分配默认的列名,也可以自己定义列名
In [11]: pd.read_csv('ex1.csv',header=None)
Out[11]:
0 1 2 3 4
0 a b c d message
1 1 2 3 4 hello
2 5 6 7 8 world
3 9 10 11 12 foo
In [12]: pd.read_csv('ex2.csv',header=None)
Out[12]:
0 1 2 3 4
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
In [13]: pd.read_csv('ex2.csv',names=['a','b','c','d'<

最低0.47元/天 解锁文章


被折叠的 条评论
为什么被折叠?



