《利用 python进行数据分析》数据:二进制数据和web及数据库交互
6.2 二进制数据格式
实现数据的高效二进制格式存储最简单的办法之一是使用Python内置的pickle序列化。
to_pickle方法将数据以pickle格式保存到磁盘上。
通过pickle直接读取被pickle化的数据,或是使用更为方便的pandas.read_pickle:
【注意:pickle仅建议用于短期存储格式。其原因是很难保证该格式永远是稳定的;今天pickle的对象可能无法被后续版本的库unpickle出来。】

使用HDF5格式
HDF5是一种存储大规模科学数组数据的非常好的文件格式。它可以被作为C标准库,带有许多语言的接口,如Java、Python和MATLAB等。HDF5中的HDF指的是层次型数据格式(hierarchical data format)。每个HDF5文件都含有一个文件系统式的节点结构,它使你能够存储多个数据集并支持元数据。与其他简单格式相比,HDF5支持多种压缩器的即时压缩,还能更高效地存储重复模式数据。对于那些非常大的无法直接放入内存的数据集,HDF5就是不错的选择,因为它可以高效地分块读写。
虽然可以用PyTables或h5py库直接访问HDF5文件,pandas提供了更为高级的接口,可以简化存储Series和DataFrame对象。HDFStore类可以像字典一样,处理低级的细节:
【没有怎么接触过这种数据,但是还是要学习一下,也许未来就需要了。查询语句有点类似SQL】
【注意:HDF5不是数据库。它最适合用作“一次写多次读”的数据集。虽然数据可以在任何时候被添加到文件中,但如果同时发生多个写操作,文件就可能会被破坏。】
【如果需要本地处理海量数据,好好研究一下PyTables和h5pyMicrosoft Excel文件。由于许多数据分析问题都是IO密集型(而不是CPU密集型),利用HDF5这样的工具能显著提升应用程序的效率。】

HDFStore支持两种存储模式,'fixed'和'table'。后者通常会更慢,但是支持使用特殊语法进行查询操作:
put是store['obj2'] = frame方法的显示版本,允许我们设置其它的选项,比如格式。

to_hdf,pandas.read_hdf函数可以快捷使用这些工具:

Microsoft Excel文件
读取的两种方法:
1、使用ExcelFile,通过传递xls或xlsx路径创建一个实例,再通过read_excel,传入表单参数读取文件;
2、将文件名传递到pandas.read_excel,可以设置多个表单参数;此方法更适合读取一个文件中的多个表单,如sheet1,sheet2....

写入excel文件的两种方法:
1、首先创建一个ExcelWriter,然后使用pandas对象的to_excel方法将数据写入到其中:;
2、还可以不使用ExcelWriter,而是传递文件的路径到to_excel:

【记住最后的save()语句】

6.3 Web APIs交互
许多网站都有一些通过JSON或其他格式提供数据的公共API。通过Python访问这些API的办法有不少。一个简单易用的办法(推荐)是requests包(http://docs.python-requests.org)。
为了搜索最新的30个GitHub上的pandas主题,我们可以发一个HTTP GET请求,使用requests扩展库:

data中的每个元素都是一个包含所有GitHub主题页数据(不包含评论)的字典。我们可以直接传递数据到DataFrame,并提取感兴趣的字段:


6.4 数据库交互
在商业场景下,大多数数据可能不是存储在文本或Excel文件中。基于SQL的关系型数据库(如SQL Server、PostgreSQL和MySQL等)使用非常广泛,其它一些数据库也很流行。数据库的选择通常取决于性能、数据完整性以及应用程序的伸缩性需求。
将数据从SQL加载到DataFrame的过程很简单,此外pandas还有一些能够简化该过程的函数。例如使用SQLite数据库(通过Python内置的sqlite3驱动器):

从表中选取数据时,大部分Python SQL驱动器(PyODBC、psycopg2、MySQLdb、pymssql等)都会返回一个元组列表:
可以将读取出来的数据存入Dataframe中,指定列名:

还可以通过description属性中获得列名:

SQLAlchemy项目是一个流行的Python SQL工具,它抽象出了SQL数据库中的许多常见差异。pandas有一个read_sql函数,可以从SQLAlchemy连接读取数据。这里,用SQLAlchemy连接SQLite数据库,并从之前创建的表读取数据:

【个人结果不对,需要求教老杨!!!】
