首页 > 编程 > Python > 正文

在Python中利用Into包整洁地进行数据迁移的教程

2020-02-23 00:26:42
字体:
来源:转载
供稿:网友

动机

我们花费大量的时间将数据从普通的交换格式(比如CSV),迁移到像数组、数据库或者二进制存储等高效的计算格式。更糟糕的是,许多人没有将数据迁移到高效的格式,因为他们不知道怎么(或者不能)为他们的工具管理特定的迁移方法。

你所选择的数据格式很重要,它会强烈地影响程序性能(经验规律表明会有10倍的差距),以及那些轻易使用和理解你数据的人。

当提倡Blaze项目时,我经常说:“Blaze能帮助你查询各种格式的数据。”这实际上是假设你能够将数据转换成指定的格式。

进入into项目

into函数能在各种数据格式之间高效的迁移数据。这里的数据格式既包括内存中的数据结构,比如:

列表、集合、元组、迭代器、numpy中的ndarray、pandas中的DataFrame、dynd中的array,以及上述各类的流式序列。

也包括存在于Python程序之外的持久化数据,比如:

CSV、JSON、行定界的JSON,以及以上各类的远程版本

HDF5 (标准格式与Pandas格式皆可)、 BColz、 SAS、 SQL 数据库 ( SQLAlchemy支持的皆可)、 Mongo

into项目能在上述数据格式的任意两个格式之间高效的迁移数据,其原理是利用一个成对转换的网络(该文章底部有直观的解释)。

如何使用它

into函数有两个参数:source和target。它将数据从source转换成target。source和target能够使用如下的格式:

Target     Source     Example

Object    Object      A particular DataFrame or list

String     String      ‘file.csv', ‘postgresql://hostname::tablename'

Type                   Like list or pd.DataFrame

所以,下边是对into函数的合法调用:
 

>>> into(list, df) # create new list from Pandas DataFrame >>> into([], df) # append onto existing list >>> into('myfile.json', df) # Dump dataframe to line-delimited JSON >>> into(Iterator, 'myfiles.*.csv') # Stream through many CSV files >>> into('postgresql://hostname::tablename', df) # Migrate dataframe to Postgres >>> into('postgresql://hostname::tablename', 'myfile.*.csv') # Load CSVs to Postgres >>> into('myfile.json', 'postgresql://hostname::tablename') # Dump Postgres to JSON >>> into(pd.DataFrame, 'mongodb://hostname/db::collection') # Dump Mongo to DataFrame

Note that into is a single function. We're used to doing this with various to_csv, from_sql methods on various types. The into api is very small; Here is what you need in order to get started:

注意,into函数是一个单一的函数。虽然我们习惯于在各种类型上使用to_csv, from_sql等方法来完成这样的功能,但接口into非常简单。开始使用into函数前,你需要:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表