前几天,PyODPS发布了0.7版本,这篇文章给大家介绍下PyODPS新版本带来的重要特性。
之前也有若干篇文章介绍过了,我们PyODPS DataFrame是延迟执行的,在调用立即执行的方法,比如execute、persist等之前,都只是构建了表达式。而真正的执行根据具体的输入数据,来决定执行的后端。
比如,我们可以根据输入是pandas DataFrame(本地数据),还是MaxCompute Table(MaxCompute数据)来决定是在本地执行,还是在MaxComput上执行。
In [1]: import pandas as pd
In [2]: pd_df = pd.DataFrame({'a': range(3)})
In [3]: from odps.df import DataFrame
In [4]: df = DataFrame(pd_df) # 本地数据
In [5]: df.a.sum()
|==========================================| 1 / 1 (100.00%) 0s
3
In [6]: %load_ext odps
In [7]: %enter
Out[7]: <odps.inter.Room at 0x105951990>
In [8]: df = DataFrame(o.get_table('pyodps_iris')) # MaxCompute数据
In [9]: df.sepal_width.sum()
|==========================================| 1 / 1 (100.00%) 15s
458.10000000000014
数据库执行
来到了0.7版本,我们的后端武器库进一步扩充,现在我们支持Postgresql和MySQL,原则上我们支持所有的主流数据库,但我们只在这两个数据库上做了测试。
我们的数据库执行后端使用 sqlalchemy
实现,想要执行还需要对应数据库的driver。
现在,如果DataFrame输入的数据是sqlalchemy Table,那么我们就可以使用数据库后端来执行。
In [24]: mysql_engine = sqlalchemy.create_engine('mysql://root:123@localhost/movielens')
In [25]: metadata = sqlalchemy.MetaData(bind=mysql_engine) # 需要绑定engine
In [26]: table = sqlalchemy.Table('top_users', metadata, extend_existing=True, autoload=True)
In [27]: top_users = DataFrame(table)
In [28]: top_users.age.sum()
|==========================================| 1 / 1 (100.00%) 0s
763
对于postgresql也是一样。 值得注意的是,现在还有部分DataFrame操作,比如自定义函数尚未支持数据库后端 。
可以看到,PyODPS DataFrame就是一个统一的数据查询语言,用户不需要改写一行代码,就可以根据输入让数据在MaxCompute、本地和数据库上执行,由于DataFrame框架的灵活性,我们甚至还可以扩展出非SQL执行后端的支持。
JOIN或者UNION数据库和MaxCompute数据
过去 一篇文章 提到过,我们可以join或者union本地和MaxCompute上的数据,这样的典型场景就是,比如我有个本地excel文件,我可以轻松读取成本地DataFrame,然后直接就可以和MaxCompute数据进行操作,省去了一大堆麻烦的过程。
现在,我们也同样可以join 数据库和MaxCompute上的数据,试想,有一堆用户数据是在数据库中进行处理,然后我们无需经过同步数据等繁琐的过程,我们就可以直接join 数据库和MaxCompute上的数据,这是何其方便的事情。
比如:
In [29]: ratings = o.get_table('movielens_ratings').to_df()
In [32]: female_top_users = top_users[top_users.sex == 'F'] # MySQL中的数据
In [33]: ratings.join(female_top_users).rating.mean()
|==========================================| 1 / 1 (100.00%) 14s
2.9451170298627924
总结
我们PyODPS一直处在快速迭代的过程中,我们所有所做的努力,都是为了让大家以更好的体验来进行数据分析和机器学习。尽管我们很努力,但精力毕竟有限,难免会有bug,会有功能不完善。希望大家能给我们提issue,能贡献代码就更好啦。
相关推荐
Pandas合并DataFrame_Merge,_Join,_Concat,_Append【Pandas入门教程6】
使用Python编程语言,并利用流行的数据处理库如Pandas和数据可视化库如Matplotlib。 项目概述 数据导入模块:从CSV文件导入数据。 数据处理模块:清洗和预处理数据。 数据分析模块:执行基本的数据分析,如统计描述...
然而,在Smalltalk编程语言中,Pharo平台也提供了一个名为DataFrame的类,它为数据分析提供了类似的功能。DataFrame是一种二维表格数据结构,能够存储各种类型的数据(如数值、字符串和布尔值),并且具有内置的方法...
标题: DataFrame:通过 SparkSql 将 Scala 类转换为 DataFrame 的方法 描述: 本篇文章将介绍如何使用 SparkSql 将 Scala 类转换为 DataFrame,这对大家具有很好的参考价值。 标签: DataFrame SparkSql Scala ...
该软件包使Google电子表格中的工作表与Pandas DataFrame之间的数据流变得容易。 可以获取使用任何工作表gspread包可以检索作为与数据帧get_as_dataframe ; 可以使用set_with_dataframe将DataFrame对象写入工作表: ...
它提供了丰富的函数和方法,用于创建、操作和查询DataFrame,例如添加新列、过滤数据、聚合函数和转换操作等。 6. **生态集成**:尽管`rust-dataframe`目前可能还处于早期阶段,但随着Rust在数据分析领域的普及,...
DataFrame是Grails框架中一个非常有用的插件,它旨在加速Web应用的开发过程,特别是处理数据展示和交互的环节。Grails是一个基于Groovy语言的开源Web应用框架,它简化了构建动态、敏捷Web应用的过程。DataFrame插件...
Dataframe数据得各种操作
在实际应用中,数据通常被组织成结构化的表格形式,如DataFrame,这是Python数据分析库Pandas中的核心数据结构。DataFrame允许我们高效地处理和操作二维数据集,具有列标签和行索引。 在数据挖掘过程中,了解和操作...
1.2.3 通过嵌套字典创建自定义行列索引的DataFrame:2 查看数据:2.1 查看数据的头和尾:2.2 查看中间的细节:2.2.1 查看索引名:2.2.2 查看列名:2.2.3 查看所有值:2.2.4 查看行数/列数:2.2.5 行/列求和:2.2.6 ...
另外,我发现 Matlab 的许多函数的方法有点难以记住哪些函数需要哪些数据结构。 相反,我用 DataFrame 类包装了 Matlab 表,该类试图尽可能地避开,以便我们可以尽可能多地利用该表,同时提供我们希望的扩展方式的...
Python和Dask:扩展DataFrame 该存储库包含有关Python和Dask的幻灯片,练习和答案:缩放数据框。 本教程的目标是教给您一个在熊猫中处理表格数据方面经验丰富的人,以解决不适合在一台计算机上存储的问题。 为什么...
例如,你可以通过以下方式创建DataFrame: ```matlab data = struct('Name', {'Alice', 'Bob', 'Charlie'}, 'Age', [25, 30, 35], 'City', {'New York', 'London', 'Paris'}); df = dataframe(data); ``` 3. ...
数据挖掘技术与应用:查看DataFrame数据的常用属性 数据挖掘技术是指从大量数据中自动发现有价值的知识或模式的过程。Pandas 库是 Python 中最常用的数据处理工具之一,它提供了多种数据结构和操作方法。本文档主要...
PySpark函数可展平从JSON / CSV / SQL / Parquet加载的任何复杂的嵌套数据框结构 例如,对于嵌套的JSON- 展平所有嵌套项:{“ human”:{“ name”:{“ first_name”:“ Jay Lohokare”}}} 通过column ='human-...
创建 DataFrame: 使用 pd.DataFrame(data) 创建 DataFrame。 数据标准化: 使用 StandardScaler 对价格、销售量和评论数量进行标准化。 应用 KMeans 聚类: 使用 KMeans 对标准化后的数据进行聚类,并将聚类结果...
Python 将DataFrame数据转换成元组 Python源码Python 将DataFrame数据转换成元组 Python源码Python 将DataFrame数据转换成元组 Python源码Python 将DataFrame数据转换成元组 Python源码Python 将DataFrame数据转换成...
烧瓶熊猫数据框 简单的Flask项目,可将熊猫数据框加载到数据库中并在页面上显示信息。 Flask Pandas Dataframe是一个one-file项目,可以帮助初学者了解一些Flask基本概念: 创建一个简单的Flask 下载公共DF 创建一...
一个DataFrame可以具有一个索引列和许多内置或用户定义类型的数据列。 您可以采用许多不同的方式对数据进行切片。 您可以加入,合并,分组数据。 您可以对数据运行各种统计,摘要和ML算法。 您可以轻松添加自定义...