惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
T
Threat Research - Cisco Blogs
N
News and Events Feed by Topic
Hacker News: Ask HN
Hacker News: Ask HN
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
Security Latest
Security Latest
Spread Privacy
Spread Privacy
aimingoo的专栏
aimingoo的专栏
N
News and Events Feed by Topic
Webroot Blog
Webroot Blog
U
Unit 42
Cyberwarzone
Cyberwarzone
小众软件
小众软件
Scott Helme
Scott Helme
Engineering at Meta
Engineering at Meta
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
爱范儿
爱范儿
S
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Schneier on Security
Schneier on Security
Latest news
Latest news
GbyAI
GbyAI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
The Register - Security
The Register - Security
WordPress大学
WordPress大学
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
PCI Perspectives
PCI Perspectives
Jina AI
Jina AI
AI
AI
NISL@THU
NISL@THU
I
Intezer
G
GRAHAM CLULEY
B
Blog
S
Secure Thoughts
IT之家
IT之家
宝玉的分享
宝玉的分享
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
V2EX - 技术
V2EX - 技术
Recorded Future
Recorded Future
Hacker News - Newest:
Hacker News - Newest: "LLM"

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
Snap! 使用笔记: 探索数据
种瓜 · 2023-02-22 · via 夜行人

文章目录

前言

Snap! 是出色的个人计算环境。

本文是在 Snap! 中探索数据的笔记。

之前一度喜欢在 Jupyterlab 中探索数据,因其出色的交互性。

Snap! 拥有更强的交互性, 数据几乎触手可及, 仿佛可以将手伸入计算机里把玩它们。

现在, 每当有探索数据的需求(它们通常是 CSV 或者 JSON 格式), Snap! 是我的首选环境, 它能够轻松处理数以百万计的数据。由于其对函数式编程以及 hyperblock(操纵多维列表) 的强大支持, 可以异常轻松而直观地操控结构化数据, 比我之前不停查阅 pandas/numpy 文档轻松许多。

当需要对正在探索的数据进行可视化时, Snap! 总是给我惊喜, 其简易和直观性, 让我可以直接摆弄图形, 直到它们符合我脑子中对数据的看法。

在 Jupyterlab 和 Snap! 中探索数据时,心态是不大一样的。

在 Jupyterlab 中, 通常会处在一种寻找现有功能的状态, 花大量时间弄清楚有哪些操纵数据的方法, 有哪些可视化的典型图表(一些带有图示的 CheatSheet 通常很有帮助), 一旦我的想法与这些内置在库里的功能不完全一致,就需要去 Stack Overflow 和 Github 里寻找各种技巧,有时找不到现成的技巧,就得一头扎到很深的地方看看如何调整代码。我有大量的时间花在工具本身上边,而这些技巧在开始下一个项目时,又忘得差不多了。这是一种不断适应工具的状态,而且经常是一种削足适履的状态。

这是我之前在 Python 生态里做的一些数据探索和可视化项目:

在 Snap! 里,探索数据和可视化充满了乐趣。我总是处在与数据的亲密关系中, 直观地摆弄和自由地思考它们。 所有的交互都是 lively(活性)的。Snap! 虽是我和数据之间的计算媒介,但我从不觉得它是负担,大多数时候几乎忘了它的存在,当我需要它提供计算能力时,总是凭直觉去做就好了。它小巧直观,所有的积木都在界面上,没有"藏在深处"的技巧,这些积木数量不多,但极为通用(来自 Lisp 的馈赠), 以至于没有了不停查阅文档的心智负担(这非常打断思绪)。

一个简单例子

Snap! 主要使用列表操控数据, 这来自 Lisp 传统。

以下是我早期使用 Snap! 列表积木探索 json 数据的例子。

一篇博客文章的数据结构:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
  "auther": {
    "name": "alan",
    "blog": "https://wwj718.github.io/",
    "posts": ["post1", "post2", "post3"]
  },
  "date": "2023-02-11",
  "title": "hi Snap!",
  "body": "Snap! is a broadly inviting programming language for kids and adults that's also a platform for serious study of computer science...",
  "tags": ["Scratch", "programming"]
}

在 Snap! 中玩耍它:

这是项目的在线地址

例子: 每日名言(Quote of the day)

Snap! 作者分享了在 Snap! 中使用探索 qod(Quote of the day) RESTful api.

这是这个 API 返回的 json 数据(每日的名言不同,但数据结构是一样的)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
  "success": {
    "total": 1
  },
  "contents": {
    "quotes": [
      {
        "quote": "Your fears, your critics, your heroes, your villains: They are fictions you perceive as reality. Choose to see through them. Choose to let them go.",
        "length": "147",
        "author": "Isaac Lidsky",
        "tags": ["fears", "inspire", "reality"],
        "category": "inspire",
        "language": "en",
        "date": "2023-02-11",
        "permalink": "https://theysaidso.com/quote/isaac-lidsky-your-fears-your-critics-your-heroes-your-villains-they-are-fictions",
        "id": "9Ei2A7a5uDzoPiF4u8FhCgeF",
        "background": "https://theysaidso.com/img/qod/qod-inspire.jpg",
        "title": "Inspiring Quote of the day"
      }
    ]
  },
  "baseurl": "https://theysaidso.com",
  "copyright": {
    "year": 2025,
    "url": "https://theysaidso.com"
  }
}

例子: Snap! 的 CodeLab Adapter 插件

我近期将 CodeLab Adapter 插件,陆续迁移到了 Snap! 中。

对 Snap! 而言, CodeLab Adapter 是一个本地 web 服务(提供 websocekt 服务), 采用 json 作为数据传输格式。为了给 CodeLab Adapter 下发命令、获取信息(功能实现在消息的语义里),需要在 Snap! 中操纵 json 数据。你可以通过查看 CodeLab Adapter 相关积木的定义, 来查看这些 json 数据的处理过程:

参考