使用 Datasets Explorer Chrome 扩展查询数据集

社区文章 发布于 2024 年 7 月 19 日

借助 HuggingFace 数据集上的新模态过滤器,我们将通过 Datasets Explorer 在浏览器中查看一些有趣的 Hugging Face 地理空间数据集并执行不同的 SQL 查询。

数据集浏览器 Chrome 扩展

通过 Hugging Face Datasets Explorer Chrome 扩展,我们可以直接在数据集上使用 SQL 编辑器。它在后台使用 DuckDB,并将不同的配置和拆分加载为视图供您查询。该扩展具有一些很棒的功能:

  • 支持私有数据集 🔒
  • 大型查询结果的无限滚动惰性加载 ♾️
  • Command + Enter 快捷键 💻
  • 完全支持 DuckDB + 扩展 🤯
  • 完全由浏览器中的 DuckDB WASM 提供支持 🦆

安装并加载 DuckDB 空间扩展

DuckDB 有一个 `spatial` 扩展,您可以在此处阅读更多信息,它使我们能够执行非常强大的地理空间查询。Datasets Explorer 的美妙之处在于我们可以自动利用这些扩展。

让我们运行以下查询:

INSTALL spatial;
LOAD spatial;

案例研究 1:美国电动汽车充电站位置数据集

让我们看看这个电动汽车充电站位置数据集,可以在此处找到。

让我们查询数据 🦆

现在我们已经设置好了,可以查询我们的数据集了。让我们首先找出不同充电器的运营商。我们可以使用下面的 SQL 查询出排名前几的运营商

拥有最多站点的顶级运营商

select metadata.operator as operator, count(*) as num_locations 
from default_view
group by operator
order by num_locations desc

我们可以看到 ChargePoint 拥有最多的站点,特斯拉紧随其后。此外还有许多其他特定位置的运营商。

现在,让我们在 DuckDB 中进行一些地理空间查询,以找出距离给定位置最近的 n 个充电器

寻找距离纽约时代广场最近的 100 个充电器 🏙️⚡

这是一个非常具体的例子,但它展示了我们无需离开浏览器即可进行的分析级别。尽管元数据是字典结构,但我们可以使用 `.` 运算符来选择不同的字段。

距离时代广场最近的 100 个电动汽车充电器

SELECT 
  metadata.name,
  metadata.operator,
  lat,
  lng,
  ST_Distance(ST_POINT(lng, lat), ST_Point(-73.9865695115598, 40.75595717084848)) AS distance,
FROM default_view
ORDER BY distance
LIMIT 100

结果

如果我们将它们绘制在地图上,可以看到纽约市周围的各种电动汽车充电站。

image/png

案例研究 2:AirBnb 住宿提供数据集 🏠

kraina/airbnb 数据集非常有趣,因为它具有几个独特的特征。即

  • 私人房间和合租房间
  • 房间类型
  • 两人两晚的费用(欧元)
  • 城市(10 个欧洲城市之一
  • 入住人数
  • 超赞房东
  • 卧室数量
  • 房客满意度
  • 清洁评级
  • dist:距离市中心距离(公里)
  • metro_dist:距离最近地铁站距离(公里)

image/png

房源最集中的城市

WITH listings_with_location AS (
    SELECT *, ST_Point(lng, lat) AS location
    FROM all_view
),
city_centers AS (
    SELECT city, ST_Point(AVG(lng), AVG(lat)) AS center
    FROM listings_with_location
    GROUP BY city
)
SELECT 
    al.city,
    COUNT(*) AS listings_within_1km
FROM 
    listings_with_location al
JOIN 
    city_centers cc ON al.city = cc.city
WHERE 
    ST_DWithin(al.location, cc.center, 1000) 
GROUP BY 
    al.city
ORDER BY 
    listings_within_1km DESC
LIMIT 5
城市 1公里内的房源
伦敦 9993
罗马 9027
巴黎 6688
里斯本 5763
雅典 5280

吸引力指数与市中心距离 🍽️🎉

SELECT 
    city,
    CASE 
        WHEN dist <= 1 THEN '0-1km'
        WHEN dist <= 3 THEN '1-3km'
        WHEN dist <= 5 THEN '3-5km'
        ELSE '5km+'
    END as distance_category,
    AVG(attr_index_norm) as avg_attraction_index,
    COUNT(*) as listings_count
FROM 
    all_view
GROUP BY 
    city, distance_category
ORDER BY 
    city, distance_category;
城市 距离类别 平均值 数量
阿姆斯特丹 0-1公里 29.35 319
阿姆斯特丹 1-3公里 15.75 1010
阿姆斯特丹 3-5公里 6.94 507
阿姆斯特丹 5公里以上 3.44 244

价格与地铁距离的关系 💸🚆

WITH proximity_prices AS (
    SELECT 
        city,
        CASE 
            WHEN metro_dist <= 0.5 THEN 'very_close'
            WHEN metro_dist <= 1 THEN 'close'
            WHEN metro_dist <= 2 THEN 'moderate'
            ELSE 'far'
        END as metro_proximity,
        realSum as price
    FROM 
        all_view
)
SELECT 
    city,
    AVG(CASE WHEN metro_proximity = 'very_close' THEN price END) as avg_price_very_close,
    AVG(CASE WHEN metro_proximity = 'close' THEN price END) as avg_price_close,
    AVG(CASE WHEN metro_proximity = 'moderate' THEN price END) as avg_price_moderate,
    AVG(CASE WHEN metro_proximity = 'far' THEN price END) as avg_price_far,
    COUNT(*) as total_listings
FROM 
    proximity_prices
GROUP BY 
    city
ORDER BY 
    city;

我们可以看到平均价格和地铁距离之间确实存在关系。

image/png

它是开源的 🤗

请查看它,它是开源的,并且在Chrome 网上应用店中。

社区

注册登录 发表评论