使用 Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence 中的 PySpark 和 Altair 代码片段更快地准备数据。 垂直搜索。 哎。

使用 Amazon SageMaker Data Wrangler 中的 PySpark 和 Altair 代码片段更快地准备数据

亚马逊SageMaker数据牧马人 是用于机器学习 (ML) 的专用数据聚合和准备工具。 它允许您使用可视化界面访问数据并执行探索性数据分析 (EDA) 和特征工程。 EDA 功能具有内置的图表数据分析功能(例如散点图或直方图)和节省时间的模型分析功能,例如特征重要性、目标泄漏和模型可解释性。 特征工程功能具有 300 多个内置转换,并且可以使用 Python、PySpark 或 Spark SQL 运行时执行自定义转换。

对于自定义可视化和转换,Data Wrangler 现在提供常见类型的可视化和转换的示例代码片段。 在这篇文章中,我们将演示如何使用这些代码片段在 Data Wrangler 中快速启动您的 EDA。

解决方案概述

在撰写本文时,您可以将数据集从以下位置导入 Data Wrangler 亚马逊简单存储服务 (Amazon S3), 亚马逊雅典娜, 亚马逊Redshift、Databricks 和雪花。 对于这篇文章,我们使用 Amazon S3 来存储 2014 Amazon 评论数据集. 以下是数据集的示例:

{ "reviewerID": "A2SUAM1J3GNN3B", "asin": "0000013714", "reviewerName": "J. McDonald", "helpful": [2, 3], "reviewText": "I bought this for my husband who plays the piano. He is having a wonderful time playing these old hymns. The music is sometimes hard to read because we think the book was published for singing from more than playing from. Great purchase though!", "overall": 5.0, "summary": "Heavenly Highway Hymns", "unixReviewTime": 1252800000, "reviewTime": "09 13, 2009" } 

在这篇文章中,我们使用三列执行 EDA——asin, reviewTimeoverall— 分别映射到产品 ID、评论时间日期和总体评论分数。 我们使用这些数据来可视化跨月和数年的评论数量的动态。

在 Data Wrangler 中使用 EDA 的示例代码片段

要开始在 Data Wrangler 中执行 EDA,请完成以下步骤:

  1. 下载 数字音乐评论数据集 JSON 并将其上传到 Amazon S3。
    我们将其用作 EDA 的原始数据集。
  2. 可选 亚马逊SageMaker Studio 并创建一个新的 Data Wrangler 流并从 Amazon S3 导入数据集。

    这个数据集有九列,但我们只使用了三列: asin, reviewTimeoverall. 我们需要删除其他六列。

  3. 创建自定义转换并选择 蟒蛇(PySpark).
  4. 扩大 搜索示例片段 并选择 删除除几个之外的所有列.
  5. 将提供的代码段输入到您的自定义转换中,然后按照说明修改代码。
    # Specify the subset of columns to keep
    cols = ["asin", "reviewTime", "overall"] cols_to_drop = set(df.columns).difference(cols) df = df.drop(*cols_to_drop)

    现在我们已经拥有了我们需要的所有列,让我们过滤数据以仅保留 2000 年至 2020 年之间的评论。

  6. 使用 过滤时间戳超出范围 删除 2000 年之前和 2020 年之后的数据的片段:
    from pyspark.sql.functions import col
    from datetime import datetime # specify the start and the stop timestamp
    timestamp_start = datetime.strptime("2000-01-01 12:00:00", "%Y-%m-%d %H:%M:%S")
    timestamp_stop = datetime.strptime("2020-01-01 12:00:00", "%Y-%m-%d %H:%M:%S") df = df.filter(col("reviewTime").between(timestamp_start, timestamp_stop))

    接下来,我们从 reviewTime 列中提取年份和月份。

  7. 使用 突出日期/时间 转变。
  8. 针对 提取列,选择 .

    接下来,我们要按年和月汇总我们在上一步中创建的评论数量。

  9. 使用 分组计算统计数据 片段:
    # Table is available as variable `df`
    from pyspark.sql.functions import sum, avg, max, min, mean, count # Provide the list of columns defining groups
    groupby_cols = ["reviewTime_year", "reviewTime_month"] # Specify the map of aggregate function to the list of colums
    # aggregates to use: sum, avg, max, min, mean, count
    aggregate_map = {count: ["overall"]} all_aggregates = []
    for a, cols in aggregate_map.items(): all_aggregates += [a(col) for col in cols] df = df.groupBy(groupby_cols).agg(*all_aggregates)

  10. 将上一步的聚合重命名为 count(overall)reviews_num 通过选择 管理列 重命名栏 转变。
    最后,我们要创建一个热图,以可视化按年和按月的评论分布。
  11. 在分析选项卡上,选择 自定义可视化.
  12. 扩大 搜索片段 并选择 热图 在下拉菜单上。
  13. 将提供的代码段输入到您的自定义可视化中:
    # Table is available as variable `df`
    # Table is available as variable `df`
    import altair as alt # Takes first 1000 records of the Dataframe
    df = df.head(1000) chart = ( alt.Chart(df) .mark_rect() .encode( # Specify the column names for X and Y axis, # Both should have discrete values: ordinal (:O) or nominal (:N) x= "reviewTime_year:O", y="reviewTime_month:O", # Color can be both discrete (:O, :N) and quantitative (:Q) color="reviews_num:Q", ) .interactive()
    )

    我们得到以下可视化。

    使用 Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence 中的 PySpark 和 Altair 代码片段更快地准备数据。 垂直搜索。 哎。
    如果您想进一步增强热图,您可以将数据切片以仅显示 2011 年之前的评论。由于 2012 年以来的大量评论,这些在我们刚刚创建的热图中很难识别。

  14. 向您的自定义可视化添加一行代码:
    # Table is available as variable `df`
    import altair as alt df = df[df.reviewTime_year < 2011]
    # Takes first 1000 records of the Dataframe
    df = df.head(1000) chart = ( alt.Chart(df) .mark_rect() .encode( # Specify the column names for X and Y axis, # Both should have discrete values: ordinal (:O) or nominal (:N) x= "reviewTime_year:O", y="reviewTime_month:O", # Color can be both discrete (:O, :N) and quantitative (:Q) color="reviews_num:Q", ) .interactive()
    )

我们得到以下热图。

使用 Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence 中的 PySpark 和 Altair 代码片段更快地准备数据。 垂直搜索。 哎。

现在热图更明显地反映了 2011 年之前的评论:我们可以观察到季节性影响(年底带来了更多的购买,因此也有更多的评论),并且可以识别出异常月份,例如 2003 年 2005 月和 XNUMX 年 XNUMX 月。值得进一步调查以确定这些异常的原因。

结论

Data Wrangler 是专门为 ML 构建的数据聚合和准备工具。 在这篇文章中,我们演示了如何使用 Data Wrangler 提供的代码片段快速执行 EDA 和转换数据。 您只需要找到一个片段,输入代码并调整参数以匹配您的数据集。 您可以继续迭代您的脚本以创建更复杂的可视化和转换。
要了解有关 Data Wrangler 的更多信息,请参阅 创建和使用数据管理员流.


作者简介

使用 Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence 中的 PySpark 和 Altair 代码片段更快地准备数据。 垂直搜索。 哎。尼基塔·伊夫金 是应用科学家,Amazon SageMaker Data Wrangler。

使用 Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence 中的 PySpark 和 Altair 代码片段更快地准备数据。 垂直搜索。 哎。海德尔纳克维 是 AWS 的解决方案架构师。 他拥有丰富的软件开发和企业架构经验。 他专注于帮助客户通过 AWS 实现业务成果。 他常驻纽约。

使用 Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence 中的 PySpark 和 Altair 代码片段更快地准备数据。 垂直搜索。 哎。哈里什·拉贾戈帕兰 是 Amazon Web Services 的高级解决方案架构师。 Harish 与企业客户合作,帮助他们完成云之旅。

使用 Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence 中的 PySpark 和 Altair 代码片段更快地准备数据。 垂直搜索。 哎。詹姆斯吴 是 AWS 的高级 AI/ML 专家 SA。 他与客户合作,加速他们的云之旅并快速实现他们的业务价值。 除此之外,James 还热衷于在各个领域开发和扩展大型 AI/ML 解决方案。 在加入 AWS 之前,他领导了一个由 ML 工程师和软件开发人员组成的多学科创新技术团队,供职于一家市场和广告行业的全球顶级公司。

时间戳记:

更多来自 AWS机器学习