bamboolib
重要
此功能目前以公共预览版提供。
注意
bamboolib 在 Databricks Runtime 11.3 LTS 及更高版本中受支持。
bamboolib 是一个用户界面组件,允许从 Azure Databricks 笔记本内部进行无代码数据分析和转换。 bamboolib 可帮助用户更轻松地处理其数据并加快常见的数据整理、浏览和可视化任务。 当用户使用他们的数据完成这些类型的任务时,bamboolib 会在后台自动生成 Python 代码。 用户可以与其他人共享此代码,这些人可以在自己的笔记本中运行此代码以快速重现这些原始任务。 他们还可以使用 bamboolib 通过其他数据任务扩展这些原始任务,而无需知道如何编写代码。 那些具有编码经验的人可以扩展此代码,以创建更复杂的结果。
Bamboolib 在后台使用 ipywidgets,这是一个用于 IPython 内核的交互式 HTML 小组件框架。 Ipywidgets 在 IPython 内核内部运行。
目录
要求
- Azure Databricks 笔记本,它附加到具有 Databricks Runtime 11.0 或更高版本的 Azure Databricks 群集。
bamboolib
库必须可供笔记本使用。- 要仅在特定群集上从 PyPI 中安装库,请参阅群集库。
- 若要使用
%pip
命令使库仅适用于特定笔记本,请参阅笔记本范围的 Python 库。
快速入门
创建 Python 笔记本。
在笔记本的第一个单元格中,输入以下代码,然后运行该单元格。 如果 bamboolib 已准备好安装在工作区或群集中,则可以跳过此步骤。
%pip install bamboolib
在笔记本的第二个单元格中,输入以下代码,然后运行该单元格。
import bamboolib as bam
在笔记本的第三个单元格中,输入以下代码,然后运行该单元格。
bam
备注
或者,可以打印现有的 pandas 数据帧以显示 bamboolib,以便与该特定数据帧一起使用。
继续执行关键任务。
演练
可以单独使用 bamboolib 或 与现有 pandas 数据帧配合使用。
单独使用 bamboolib
本演练将使用 bamboolib 在笔记本中显示示例销售数据集的内容。 然后,尝试使用 bamboolib 自动生成的一些相关笔记本代码。 最后,查询销售数据集内容的副本并对其排序。
创建 Python 笔记本。
在笔记本的第一个单元格中,输入以下代码,然后运行该单元格。 如果 bamboolib 已准备好安装在工作区或群集中,则可以跳过此步骤。
%pip install bamboolib
在笔记本的第二个单元格中,输入以下代码,然后运行该单元格。
import bamboolib as bam
在笔记本的第三个单元格中,输入以下代码,然后运行该单元格。
bam
单击“加载虚拟数据”。
在“加载虚拟数据”窗格中,对于“加载用于测试 bamboolib 的虚拟数据集”,请选择“Sales 数据集”。
单击“执行” 。
显示 item_type 为“婴儿食品”的所有行:
- 在“搜索操作”列表中,选择“筛选行”。
- 在“筛选行”窗格中,在“选择”列表(位于“位置”上方,选择“选择行”。
- 在“位置”下方的列表中,选择 item_type。
- 在 item_type 旁边的“选择”列表中,选择“包含值”。
- 在“包含值”旁边的“选择值”框中,选择“婴儿食品”。
- 单击“执行” 。
复制此查询自动生成的 Python 代码:
- 单击数据预览下方的“复制代码”。
粘贴和修改代码:
在笔记本的第四个单元格中粘贴所复制的代码。 应如下所示:
import pandas as pd df = pd.read_csv(bam.sales_csv) # Step: Keep rows where item_type is one of: Baby Food df = df.loc[df['item_type'].isin(['Baby Food'])]
添加此代码,使其仅显示 order_prio 为 C 的行,然后运行该单元格:
import pandas as pd df = pd.read_csv(bam.sales_csv) # Step: Keep rows where item_type is one of: Baby Food df = df.loc[df['item_type'].isin(['Baby Food'])] # Add the following code. # Step: Keep rows where order_prio is one of: C df = df.loc[df['order_prio'].isin(['C'])] df
提示
除了编写此代码,还可通过在第三个单元格中使用 bamboolib 仅显示 order_prio 为 C 的行来执行相同的操作。此步骤是扩展 bamboolib 之前自动生成的代码的示例。
按区域按升序对行进行排序:
- 在第四个单元格中的小组件中,在“搜索操作”列表中,选择“对行进行排序”。
- 在“对列进行排序”窗格中的“选择列”列表中,选择“区域”。
- 在“区域”旁边的列表中,选择“升序(A-Z)”。
- 单击“执行” 。
注意
这相当于自己编写以下代码:
df = df.sort_values(by=['region'], ascending=[True]) df
还可仅使用第三个单元格中的 bamboolib 按区域按升序对行进行排序。 此步骤演示如何使用 bamboolib 扩展你编写的代码。 使用 bamboolib 时,它会在后台自动生成其他代码,以便进一步扩展已扩展的代码!
继续执行关键任务。
将 bamboolib 与现有数据帧配合使用
本演练将使用 bamboolib 在笔记本中显示 pandas 数据帧的内容。 此数据帧包含示例销售数据集的副本。 然后,尝试使用 bamboolib 自动生成的一些相关笔记本代码。 最后,查询数据帧的部分内容并对其进行排序。
创建 Python 笔记本。
在笔记本的第一个单元格中,输入以下代码,然后运行该单元格。 如果 bamboolib 已准备好安装在工作区或群集中,则可以跳过此步骤。
%pip install bamboolib
在笔记本的第二个单元格中,输入以下代码,然后运行该单元格。
import bamboolib as bam
在笔记本的第三个单元格中,输入以下代码,然后运行该单元格。
import pandas as pd df = pd.read_csv(bam.sales_csv) df
请注意,bamboolib 仅支持 pandas 数据帧。 若要将 PySpark 数据帧转换为 pandas 数据帧,请调用 PySpark 数据帧上的 toPandas。 若要将 PySpark 数据帧上的 Pandas API 转换为 pandas 数据帧,请调用 PySpark 数据帧上 Pandas API 上的 to_pandas。
单击“显示 bamboolib UI”。
显示 item_type 为“婴儿食品”的所有行:
- 在“搜索操作”列表中,选择“筛选行”。
- 在“筛选行”窗格中,在“选择”列表(位于“位置”上方,选择“选择行”。
- 在“位置”下方的列表中,选择 item_type。
- 在 item_type 旁边的“选择”列表中,选择“包含值”。
- 在“包含值”旁边的“选择值”框中,选择“婴儿食品”。
- 单击“执行” 。
复制此查询自动生成的 Python 代码。 为此,请单击数据预览下方的“复制代码”。
粘贴和修改代码:
在笔记本的第四个单元格中粘贴所复制的代码。 应如下所示:
# Step: Keep rows where item_type is one of: Baby Food df = df.loc[df['item_type'].isin(['Baby Food'])]
添加此代码,使其仅显示 order_prio 为 C 的行,然后运行该单元格:
# Step: Keep rows where item_type is one of: Baby Food df = df.loc[df['item_type'].isin(['Baby Food'])] # Add the following code. # Step: Keep rows where order_prio is one of: C df = df.loc[df['order_prio'].isin(['C'])] df
提示
除了编写此代码,还可通过在第三个单元格中使用 bamboolib 仅显示 order_prio 为 C 的行来执行相同的操作。此步骤是扩展 bamboolib 之前自动生成的代码的示例。
按区域按升序对行进行排序:
a. 在第四个单元格中的小组件中,单击“对行进行排序”。
- 在“对列进行排序”窗格中的“选择列”列表中,选择“区域”。
- 在“区域”旁边的列表中,选择“升序(A-Z)”。
- 单击“执行” 。
注意
这相当于自己编写以下代码:
df = df.sort_values(by=['region'], ascending=[True]) df
还可仅使用第三个单元格中的 bamboolib 按区域按升序对行进行排序。 此步骤演示如何使用 bamboolib 扩展你编写的代码。 使用 bamboolib 时,它会在后台自动生成其他代码,以便进一步扩展已扩展的代码!
继续执行关键任务。
关键任务
本节内容:
将小组件添加到单元格
场景:你希望 bamboolib 小组件显示在单元格中。
确保笔记本满足 bamboolib 的要求。
如果 bamboolib 尚未安装在工作区或群集中,请在笔记本的单元格中运行以下代码,最好在第一个单元格中运行:
%pip install bamboolib
在笔记本中运行以下代码,最好是在笔记本的第一个或第二个单元格中运行:
import bamboolib as bam
选项 1:在你希望在其中显示小组件的单元格中,添加以下代码,然后运行该单元格:
bam
小组件显示在代码下方的单元格中。
或:
选项 2:在包含对 pandas 数据帧的引用的单元格中,打印数据帧。 例如,给定以下数据帧定义,运行该单元格:
import pandas as pd from datetime import datetime, date df = pd.DataFrame({ 'a': [ 1, 2, 3 ], 'b': [ 2., 3., 4. ], 'c': [ 'string1', 'string2', 'string3' ], 'd': [ date(2000, 1, 1), date(2000, 2, 1), date(2000, 3, 1) ], 'e': [ datetime(2000, 1, 1, 12, 0), datetime(2000, 1, 2, 12, 0), datetime(2000, 1, 3, 12, 0) ] }) df
小组件显示在代码下方的单元格中。
请注意,bamboolib 仅支持 pandas 数据帧。 若要将 PySpark 数据帧转换为 pandas 数据帧,请调用 PySpark 数据帧上的 toPandas。 若要将 PySpark 数据帧上的 Pandas API 转换为 pandas 数据帧,请调用 PySpark 数据帧上 Pandas API 上的 to_pandas。
清除小组件
场景:你想要清除小组件的内容,然后将新数据读入现有小组件。
选项 1:在包含目标小组件的单元格中运行以下代码:
bam
小组件将被清除并重新播放“Databricks: 从 DBFS 中读取 CSV 文件”、“Databricks: 加载数据库表”和“加载虚拟数据”按钮。
备注
如果出现此错误 name 'bam' is not defined
,请在笔记本中运行以下代码(最好是在笔记本的第一个单元格中运行),然后重试:
import bamboolib as bam
选项 2:在包含对 pandas 数据帧的引用的单元格中,通过再次运行此单元格,打印该数据帧。 小组件将被清除并显示新数据。
数据加载任务
本节内容:
将示例数据集的内容读入小组件
场景:你想要将一些示例数据(例如一些虚构的销售数据)读入小组件,以便测试小组件的功能。
单击“加载虚拟数据”。
备注
如果“加载虚拟数据”不可见,请清除具有选项 1 的小组件,然后重试。
在“加载虚拟数据”窗格中,对于“加载用于测试 bamboolib 的虚拟数据集”,请选择要加载的数据集的名称。
对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
单击“执行” 。
小组件显示数据集的内容。
提示
可以切换当前小组件以显示其他示例数据集的内容:
- 在当前小组件中,单击“加载虚拟数据”选项卡。
- 按照前面的步骤将其他示例数据集的内容读入小组件。
将 CSV 文件的内容读入小组件
场景:你想要将 Azure Databricks 工作区中的 CSV 文件的内容读取到小组件中。
单击“Databricks: 从 DBFS 中读取 CSV 文件”。
备注
如果“Databricks: 从 DBFS 中读取 CSV 文件”不可见,请清除具有选项 1 的小组件,然后重试。
在“从 DBFS 中读取 CSV”窗格中,浏览到包含目标 CSV 文件的位置。
选择目标 CSV 文件。
对于“数据帧名称”,输入 CSV 文件内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
对于“CSV 值分隔符”,请输入分隔 CSV 文件中的值的字符,或将逗号 (,) 字符保留为默认值分隔符。
对于“小数点分隔符”,请输入分隔 CSV 文件中的小数的字符,或将句点 (.) 字符保留为默认值分隔符。
对于“行限制: 读取前 N 行 - 留空表示不受限制”,输入要读入小组件的最大行数,或将 100000 保留为默认行数,或将此框留空以指定没有行限制。
单击“打开 CSV 文件”。
小组件根据指定的设置显示 CSV 文件的内容。
提示
可以切换当前小组件以显示其他 CSV 文件的内容:
- 在当前小组件中,单击“从 DBFS 中读取 CSV”选项卡。
- 按照前面的步骤将其他 CSV 文件的内容读入小组件。
将数据库表的内容读入小组件
场景:你想要将 Azure Databricks 工作区中的数据集表的内容读取到小组件中。
单击“Databricks: 加载数据库表”。
注意
如果“Databricks: 加载数据库表”不可见,请清除具有选项 1 的小组件,然后重试。
在“Databricks: 加载数据库表”窗格中,对于“数据库 - 留空表示默认数据库”,请输入目标表所在的数据库的名称,或将此框留空以指定默认数据库。
对于“表”,请输入目标表的名称。
对于“行限制: 读取前 N 行 - 留空表示不受限制”,输入要读入小组件的最大行数,或将 100000 保留为默认行数,或将此框留空以指定没有行限制。
对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
单击“执行” 。
小组件根据指定的设置显示表的内容。
提示
可以切换当前小组件以显示其他表的内容:
- 在当前小组件中,单击“Databricks: 加载数据库表”选项卡。
- 按照前面的步骤将其他表的内容读入小组件。
数据操作任务
bamboolib 提供 50 多个数据操作。 下面是一些较常见的入门数据操作任务。
本节内容:
选择列
场景:你希望按名称、数据类型或以匹配某些正则表达式的方式仅显示特定的表列。 例如,在虚拟“Sales 数据集”中,你希望仅显示 item_type
和 sales_channel
列,或者只显示列名称中包含字符串 _date
的列。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 select,然后选择“选择或删除列”。
- 选择“选择或删除列”。
- 在“选择或删除列”窗格中的“选择”下拉列表中,选择“选择”。
- 选择目标列名或包含条件。
- 对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
- 单击“执行” 。
删除列
场景:你希望按名称、数据类型或以匹配某些正则表达式的方式隐藏特定的表列。 例如,在虚拟“Sales 数据集”中,你希望隐藏 order_prio
、order_date
和 ship_date
列,或者希望隐藏仅包含日期时间值的所有列。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 drop,然后选择“选择或删除列”。
- 选择“选择或删除列”。
- 在“选择或删除列”窗格中的“选择”下拉列表中,选择“删除”。
- 选择目标列名或包含条件。
- 对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
- 单击“执行” 。
筛选行
场景:你希望根据匹配或缺少的特定列值等条件显示或隐藏特定表行。 例如,在虚拟“销售数据集”中,你希望只显示那些 item_type
列的值设置为 Baby Food
的行。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 filter,然后选择“筛选行”。
- 选择“筛选行”。
- 在“筛选行”窗格中的“选择”下拉列表中(“位置”上方),选择“选择行”或“删除行”。
- 指定第一个筛选器条件。
- 若要添加另一个筛选器条件,请单击“添加条件”,并指定下一个筛选器条件。 根据需要重复操作。
- 对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
- 单击“执行” 。
对行进行排序
场景:你想要根据一列或多列中的值对表行进行排序。 例如,在虚拟“销售数据集”中,你希望按照 region
列的值按从 A 到 Z 的字母顺序显示行。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 sort,然后选择“对行进行排序”。
- 选择“对行进行排序”。
- 在“对列进行排序”窗格中,选择排序依据的第一列和排序顺序。
- 要添加其他排序条件,请单击“添加列”,并指定下一个排序条件。 根据需要重复操作。
- 对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
- 单击“执行” 。
对行和列进行分组的任务
本节内容:
按单个聚合函数对行和列进行分组
场景:你希望通过计算分组来显示行和列结果,并且想要为这些分组分配自定义名称。 例如,在虚拟“销售数据集”中,你希望按 country
列的值对行进行分组,显示包含相同 country
值的行数,并将计算出的计数列表命名为 country_count
。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 group,然后选择“分组依据和聚合(通过重命名)”。
- 选择“分组依据和聚合(通过重命名)”。
- 在“分组依据与列重命名”窗格中,选择分组依据的列、第一个计算,并根据需要指定计算列的名称。
- 若要添加另一个计算,请单击“添加计算”,并指定下一个计算和列名称。 根据需要重复操作。
- 指定存储结果的位置。
- 对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
- 单击“执行” 。
按多个聚合函数对行和列进行分组
场景:你希望通过计算分组来显示行和列结果。 例如,在虚拟“销售数据集”中,你希望按 region
、country
以及 sales_channel
列的值对行进行分组,按 sales_channel
显示包含相同 region
和 country
值的行数,以及按 region
、country
和 sales_channel
的唯一组合显示 total_revenue
的行数。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 group,然后选择“分组依据和聚合(默认值)”。
- 选择“分组依据和聚合(默认值)”。
- 在“分组依据与列重命名”中,选择分组依据的列和第一个计算。
- 要添加另一个计算,请单击“添加计算”,并指定下一个计算。 根据需要重复操作。
- 指定存储结果的位置。
- 对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
- 单击“执行” 。
删除包含缺失值的行
场景:你希望删除具有指定列缺失值的任何行。 例如,在虚拟“Sales 数据集”中,你希望删除任何具有缺失值 item_type
的行。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 drop 或 remove,然后选择“删除缺失值”。
- 选择“删除缺失值”。
- 在“删除缺失值”窗格中,选择列以删除具有该列缺少值的任何行。
- 对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
- 单击“执行” 。
删除重复行
场景:你希望删除具有指定列重复值的任何行。 例如,在虚拟“Sales 数据集”中,你希望删除彼此完全重复的任何行。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 drop 或 remove,然后选择“删除/删除重复项”。
- 选择“删除/删除重复项”。
- 在“删除重复项 ”窗格中,选择列以删除对于这些列具有重复值的任何行,然后选择是保留具有重复值的第一行还是最后一行。
- 对于“数据帧名称”,输入表内容的编程标识符的名称作为数据帧,或保留 df 作为默认编程标识符。
- 单击“执行” 。
查找并替换缺失值
场景:你希望将缺失值替换为具有指定列的任何行的替换值。 例如,在虚拟“Sales 数据集”中,你希望将 item_type
列中具有缺失值的任何行替换为值 Unknown Item Type
。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 find 或 replace,然后选择“查找并替换缺失值”。
- 选择“查找并替换缺失值”。
- 在“替换缺失值 ”窗格中,选择要替换其缺失值的列,然后指定替换值。
- 单击“执行” 。
创建列公式
场景:你希望创建使用唯一公式的列。 例如,在虚拟“Sales 数据集”中,你希望创建一个名为 profit_per_unit
的列,该列显示每行的 total_profit
列值除以 units_sold
列值的结果。
- 在“数据”选项卡上的“搜索操作”下拉列表中,执行下列操作之一:
- 键入 formula,然后选择“新建列公式”。
- 选择“新建列公式”。
- 在“替换缺失值 ”窗格中,选择要替换其缺失值的列,然后指定替换值。
- 单击“执行” 。
数据操作历史记录任务
本节内容:
查看在小组件中执行的操作列表
场景:你希望从最近的更改开始,查看小组件中所做的所有更改的列表。
单击“历史记录”。 操作列表显示在“转换历史记录”窗格中。
撤消在小组件中执行的最近操作
场景:你希望还原在小组件中执行的最近更改。
执行下列操作之一:
- 单击逆时针方向箭头图标。
- 单击“历史记录”,然后在“转换历史记录”窗格中,单击“撤消最后一步”。
恢复在小组件中执行的最近操作
场景:你希望还原在小组件中执行的最近还原。
执行下列操作之一:
- 单击顺时针箭头图标。
- 单击“历史记录”,然后在“转换历史记录”窗格中,单击“恢复最后一步”。
更改在小组件中执行的最近操作
场景:你希望更改在小组件中执行的最近更改。
- 执行下列操作之一:
- 单击铅笔图标。
- 单击“历史记录”,然后在“转换历史记录”窗格中,单击“编辑最后一步”。
- 进行所需的更改,然后单击“执行”。
获取代码以编程方式将小组件的当前状态重新创建为数据帧
场景:你希望获取以编程方式重新创建当前小组件的状态(以 Pandas 数据帧的形式标识)的 Python 代码。 你希望在此工作簿中的另一个单元格中运行此代码,或者完全在不同的工作簿中运行此代码。
单击“获取代码”。
在“导出代码”窗格中,单击“复制代码”。 代码已复制到系统的剪贴板上。
将代码粘贴到此工作簿中的其他单元格或另一个工作簿中。
编写其他代码,以编程方式使用此 pandas 数据帧,然后运行该单元格。 例如,要显示数据帧的内容,假设数据帧由
df
以编程方式表示:# Your pasted code here, followed by... df
限制
有关详细信息,请参阅 Databricks 笔记本的已知限制。