如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例

  • A+
所属分类:地图服务
广告也精彩

如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例Visualizing Geospatial E-Commerce Sales Data with kepler.gl在移动互联网的商业世界中,用户的每一次消费都会留下位置数据,而优良的可视化将帮助我们更好地理解位置数据,让我们在位置数据的驱动下做出更准确的商业决策。今天,Max 主要想和大家分享一个基于开源地理分析工具Kepler.gl的商业数据可视化项目。这个项目的开发者 Thomas Trovato将向大家展示如何利用 Uber 的开源工具 Kepler.gl 实现电子商务 (E-Commerce) 销售数据的地理空间可视化。现在,就让我们一起来看看吧!关于 Kepler.gl的知识点:Kepler.gl,是一款 Uber 的开源地理空间分析工具,基于 Mapbox 的底层设计,提供更加简洁易行的位置数据分析能力。kepler.gl 可以完成复杂的数据分析,并生成非常漂亮的可视化效果。在 kepler.gl 中创建的任何数据可视化效果都可以转化为自定义图层,添加到你的地图中,从而充分发挥你的想象,实现各种各样充满创意的项目。更多内容请查看如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例:Kepler.gl 官网Uber 联合 Mapbox 推出开源可视化工具 Kepler.glThomas Trovato任务背景作为内部研究和发现工作的一部分,我们希望评估可视化数据分析工具的可用性和功能,以检查我们的一个客户正在举办的活动的在线门票销售数据集。我们的数据集包括客户在线购买活动门票的地点,以及活动门票的提前购买时间。在这种情况下,像 kepler.gl 这样的数据可视化工具非常适合快速生成任何观察者都能轻松理解的数据视图。Kepler.gl 是 Uber 开发的开源地理空间数据分析和可视化工具。Kepler.gl可以直接集成到基于 React 的 Web 应用程序或 Jupyter 笔记本中。在本次练习中,我们将使用 "演示应用程序",网址为https://kepler.gl/demo 。请注意,虽然这些可视化是受真实事件的启发,但实际的可视化只是为了演示kepler.gl。电子商务订单的地理编码在我们对订单数据集进行任何地理空间分析之前,我们首先需要通过为每个订单分配一个经纬度来对订单上的地址进行地理编码。对于我们的数据集,即客户订单和相关细节的 MySQL 数据库,我们将根据客户账单地址中的邮政编码来完成这项工作。许多供应商提供的地理编码 API 有不同的价格点和请求限制,但在这个练习中,我们将使用Google的地理编码 API。为了获得最佳的结果(和数据集的一般可读性),我们已经通过将字母转换为大写字母并过滤掉任何空格、连字符或其他非字母数字字符来 "规范 "邮政编码。当我们的初始数据集被导出到 CSV 文件后,下一步是检索地理编码数据。这是用 Python 脚本完成的,但当然也可以用任何允许你进行 HTTP 请求和/或写入 CSV 的语言来完成。首先,我们导入必要的库,并将地理编码数据加载到 Pandas DataFrame 对象中。import pandas as pdimport geocoderimport requestspostal_data = pd.read_csv('2019_Postal_Code_Export.csv')unique_postalcodes = set(postal_data[‘normalized_postal’])# NOTE: If there we already have a postal code directory from# a previous run, then we can filter those out from the# `unique_postalcodes` here to avoid duplicating API requests.Pandas是一个非常强大的 Python 开源库,有很多数据操作和分析的功能。它可以快速高效地读写 Series 或 DataFrame 对象中的数据,可以处理 CSV、Excel 或文本文件,也可以进行数据库导出。接下来,我们将开始建立一个邮政编码 "目录 "的过程,将一个邮政编码与其经纬度值进行映射。一个条目的例子可能是 [N6J3T9, 43. 3326543, -79. 4324534]. 我们将用它来装饰我们当前的数据集,但也要保留它以备将来使用,这样我们就可以在未来将它应用于任何重复的邮政编码,而不必进行多余的 API 调用。为了向 Google 的 Geocoding API 发出这些请求,我们使用 Python 的开源 Requests 库,它提供了简单的 HTTP 请求函数,来创建一个 Session 对象来发出我们的多个请求。我们还使用了 Geocoder库,它自带了简单的函数,可以向许多不同的提供者发出地理编码API请求,包括 Google、Bing、ArcGIS 等。outFile = open(r"Documents/geocode_directory.cs", "w+")outFile.write("postal_code,latitude,longitude\n")try: with requests.Session() as session: for postalcode in unique_postalcodes: g = geocoder.google(postalcode, session=session, key='GOOGLE_API_KEY') if not(g.ok): print(postalcode + ", " + str(g.json)) else: print(postalcode + ", " + str(g.latlng)) outFile.write(postalcode + "," + str(g.latlng[0]) + "," + str(g.latlng[1]) + "\n")except: print("Something went wrong, stopping requests.")finally: outFile.close()这段代码将遍历数据集中的每一个独特的邮政编码,并请求获取其大致的经纬度。我们将把响应保存到我们的目录文件中,并输出到控制台,这样我们就可以把它复制到一个文件中,以防脚本运行时出错。如果脚本因为任何原因被中断,我们最终只得到了部分地理编码数据,我们可以简单地重复这个过程,过滤掉任何已经被地理编码的值,并将结果文件合并在一起。一旦我们有了我们的地理编码数据,我们就可以使用 Pandas 来装饰我们的初始客户数据导出。geocoded_postals = pd.read_csv(r"Documents/geocode_directory.csv")lat_dict = geocoded_postals.set_index('postal_code')['latitude'].to_dict()lng_dict = geocoded_postals.set_index('postal_code')['longitude'].to_dict()postal_data['lat'] = postal_data['normalized_postal'].map(lat_dict)postal_data['lng'] = postal_data['normalized_postal'].map(lng_dict)postal_data.to_csv(path_or_buf='2019_Postal_Code_Export’, index=False)准备好数据后,我们现在就可以将其导入到 kepler.gl 中。在kepler.gl中可视化数据将数据加载到 kepler.gl 中很简单,https://kepler.gl/demo 上的演示应用程序提供了一种直观的方式,可以立即开始在地图上查看您的数据。当页面首次加载时,系统会提示您上传数据。请注意,kepler.gl 演示程序是在您的浏览器中运行的,因此任何上传的数据都不会被发送到他们的服务器上,而是保留在您的本地机器上。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例根据数据集中的列,kepler.gl 将尝试自动决定如何呈现数据。如果您的数据集有标有 "lat "和 "lng "的列,kepler.gl 会自动识别它们,并使用这些字段将您的数据放在地图上。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例在定义你的数据层时,也可以手动指定用于经纬度的列。点击图层名称旁边的克拉来查看设置,然后点击 "基本 "旁边的省略号来选择哪些列用于你的点位。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例当前状态下的地图向我们展示的是每张单独购买的车票的位置,但 kepler.gl 提供了不同的图层类型,我们可以用它们来汇总数据。在这个练习中,我们将使用 Hexbin 层,它将数据点聚集到一个指定半径的六边形中(默认为1公里)。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例根据指定的指标,在选定的光谱上为每个 Hexbin 分配一种颜色。默认情况下,这是基于点计数,但可以更改为您数据集中的任何列。使用的色阶和光谱中的步数也可以配置。如果我们通过切换右上角的立方体图标从 2D 地图切换到 3D 地图,我们可以根据数据集中的另一个字段为我们的 hexbins 分配一个高度值。在这个例子中,我们将高度代表每个集群的点数(在我们的例子中,代表购买的门票数量),并将颜色代表购买门票的活动日期前多少天。还可以应用海拔标尺,以更容易识别数据集中的极端值。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例在视觉上我们看到,虽然全省各地都有顾客会提前购买,但那些离多伦多中心较远的顾客似乎更有可能在临近活动日期时购买(其中较深的数据点表示门票是在活动当天购买的)。这是有道理的,因为天气等变量会成为客户决策过程中的因素。接下来,我们可以根据数据集的任何一列对数据集应用一个过滤器。单击漏斗图标切换到 "过滤器 "选项卡,然后单击 "添加过滤器 "并选择一列。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例对于数字或 "时间 "数据类型(例如格式化为日期和时间,如2019-12-25 12:00:00),您可以通过单击并拖动显示的范围来选择要过滤的列的最小值、最大值和值范围。当按时间值过滤时,你还可以点击播放按钮来显示地图数据的延时动画(你需要点击并拖动屏幕底部的日期过滤区间边缘才有用)。对于其他数据类型,如字符串或日期,可以选择特定的值进行过滤。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例如果我们想在多个数据集之间比较数据(例如在多个年份的事件销售数据之间),我们可以简单地在 kepler.gl 中为我们的可视化添加另一个层。此时,从 "图层 "选项卡中重命名您的图层,从默认的 "点 "标签中重命名,以便在菜单和图例中更容易区分它们,这很有帮助。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例如果你愿意,你可以在同一个地图视图上显示多个图层,但如果我们试图在类似的数据集之间进行直接比较,就像在这个例子中一样,对我们来说,在自己的地图上查看每个数据集更有意义。我们可以通过点击右上角的图标来切换到双地图视图,并切换每个视图中哪些图层可见。需要注意的是,过滤器会分别应用到每个图层。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例结论如前所述,最初的地理编码数据检索和数据集的装饰可以通过任何数量的方法来完成,但我们选择使用所提到的 Python 库,以评估它们对未来项目的效用。这个练习并没有深入研究 Pandas 的功能,但我们鼓励你去研究它,看看它是否能满足你的需求,因为它提供了各种各样的功能。Kepler.gl 允许非常快速地生成专业的数据可视化,并提供许多不同类型的数据可视化。除了这里演示的点和十六进制外,kepler.gl 可用的数据层还包括用于汇总分析的热图和聚类,用于可视化运动的弧线和线条,以及用于显示复杂路径或多边形(如旅行路线)的 GeoJSON 层。如果我们将来需要进行这些类型的分析,kepler.gl 将是一个明显的选择。生成的视图在第一次呈现时有一个明确的 "哇 "的因素,并且可以根据所调查的数据提供清晰的、可操作的见解。Kepler.gl也可以作为一个React库,可以集成到现有的前端项目中。对于未来的工作,我们可能会研究实现在嵌入到管理界面的 kepler.gl 地图中查看最近销售数据子集的能力。需要注意的是:你的数据点的颜色和高度/大小的比例将根据当前正在检查的数据子集而动态变化。这意味着,当比较一个视图和另一个视图的数据时,你必须注意图例,以确保你得出的结论是准确的。例如,来自您的数据的不同过滤集的两个点可能具有相同的颜色,但为其分配特定颜色的值的范围可能在视图之间有所不同(例如,一个点在一个视图中的值小于16.2时可能显示为红色,而在另一个视图中,阈值为12.0)。遗憾的是,在执行时间序列回放或使用双地图视图时,目前似乎还没有办法将此比例尺标准化。如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例上文翻译自Visualizing Geospatial E-Commerce Sales Data with kepler.gl来自作者 Thoams个人博客(网址链接)福利时刻:除了Kepler.gl, Uber 还有一款开源工具 Deck.gl。此外还有许多数据可视化工具,例如Tableau,微软Power BI,这些工具我们都在之前的文章中一一介绍过,它们都使用了 Mapbox 作为全球底图哦!更多关于数据可视化的文章:蚂蚁金服开源地理可视化引擎 L7 2.0 支持 Mapbox,打造人人会用的数据可视化引擎免费可视化工具 Data Explorer 来啦!零代码在中国地图上完成惊艳数据可视化项目设计 | Tableau 可视化十大案例,原来数据还能长得这么好看盘点 | 2019 年 Top 10 Mapbox 开发者地图,一年的精华都在这里,文末有礼物如果你想获得更多关于地图的内容教程,欢迎添加 Max(Mapbox_max) 加入开发者群。?? 请大家继续关注 Mapbox 公众号,获取更多教程与设计灵感!并欢迎您留下你的问题、建议、产品想法等,我们会在 1- 3 个工作日内回复你哦!如何用kepler.gl实现电子商务销售数据的地理可视化?内附实践案例
点击查看详情

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
avatar

发表评论

您必须登录才能发表评论!