第10章 数据可视化¶
📚 章节概述¶
本章将深入讲解数据可视化,包括Tableau、Looker、Superset等。通过本章学习,你将能够创建高质量的数据可视化。
🎯 学习目标¶
完成本章后,你将能够:
- 理解数据可视化的核心概念
- 掌握Tableau的使用
- 了解Looker和Superset
- 掌握数据可视化设计原则
- 能够创建生产级的数据可视化
10.1 数据可视化概述¶
10.1.1 什么是数据可视化¶
数据可视化是将数据转换为图形表示,帮助人们理解数据的技术。
数据可视化价值¶
- 快速理解
- 直观展示数据
- 快速发现模式
-
便于决策
-
洞察发现
- 发现隐藏模式
- 识别异常值
-
理解数据关系
-
沟通有效
- 简化复杂信息
- 讲故事能力强
- 提高说服力
10.1.2 数据可视化类型¶
- 比较类
- 柱状图
- 条形图
-
饼图
-
趋势类
- 折线图
- 面积图
-
散点图
-
分布类
- 直方图
- 箱线图
-
热力图
-
关系类
- 散点图
- 气泡图
- 树状图
10.2 Tableau¶
10.2.1 Tableau概述¶
Tableau是强大的数据可视化工具,支持多种数据源和图表类型。
核心特性¶
- 拖拽式操作
- 简单易用
- 无需编程
-
快速创建
-
丰富图表
- 50+图表类型
- 自定义图表
-
交互式仪表板
-
数据连接
- 多种数据源
- 实时数据
- 大数据支持
10.2.2 Tableau使用¶
Python
import tableauserverclient as TSC
# 连接到 Tableau Server
tableau_auth = TSC.TableauAuth('username', 'password', site_id='site_name')
server = TSC.Server('https://your-server.com', use_server_version=True)
with server.auth.sign_in(tableau_auth):
# 查询已有项目
all_projects, _ = server.projects.get()
project = next(p for p in all_projects if p.name == 'Sales Project')
# 发布数据源(从 .tdsx 文件)
ds_item = TSC.DatasourceItem(project.id, name='Sales Data Source')
ds_item = server.datasources.publish(
ds_item,
'sales_data.tdsx',
TSC.Server.PublishMode.Overwrite
)
print(f"Datasource published: {ds_item.id}")
# 发布工作簿(从 .twbx 文件)
wb_item = TSC.WorkbookItem(project.id, name='Sales Dashboard')
wb_item = server.workbooks.publish(
wb_item,
'sales_dashboard.twbx',
TSC.Server.PublishMode.Overwrite
)
print(f"Workbook published: {wb_item.id}")
# 查询工作簿中的视图
server.workbooks.populate_views(wb_item)
for view in wb_item.views:
print(f"View: {view.name}, URL: {view.content_url}")
10.3 Looker¶
10.3.1 Looker概述¶
Looker是商业智能和数据分析平台,支持SQL查询和可视化。
核心特性¶
- SQL查询
- 可视化SQL编辑器
- 自动完成
-
语法高亮
-
LookML
- 数据建模语言
- 声明式定义
-
版本控制
-
协作功能
- 团队共享
- 权限管理
- 评论和讨论
10.3.2 Looker使用¶
Python
import looker_sdk
# 初始化 Looker SDK(使用 looker.ini 配置文件)
sdk = looker_sdk.init40() # 使用 API 4.0
# 创建查询
body = looker_sdk.models40.WriteQuery(
model="ecommerce",
view="order_items",
fields=["products.category", "order_items.total_revenue"],
filters={"order_items.created_date": "30 days"},
sorts=["order_items.total_revenue desc"],
limit="10"
)
query = sdk.create_query(body=body)
# 运行查询并获取结果
result = sdk.run_query(query_id=query.id, result_format="json")
print(result)
# 获取已有 Dashboard
dashboards = sdk.search_dashboards(title="Sales")
for dash in dashboards:
print(f"Dashboard: {dash.title}, ID: {dash.id}")
# 获取 Look 列表
looks = sdk.all_looks()
for look in looks[:5]:
print(f"Look: {look.title}, ID: {look.id}")
10.4 Superset¶
10.4.1 Superset概述¶
Superset是开源的数据可视化和数据探索平台。
核心特性¶
- 开源免费
- Apache顶级项目
- 社区活跃
-
持续更新
-
SQL Lab
- SQL查询编辑器
- 数据探索
-
结果可视化
-
丰富的可视化
- 40+图表类型
- 地图可视化
- 交互式图表
10.4.2 Superset使用¶
Python
# Superset 示例(通过 REST API 调用)
import requests
SUPERSET_URL = "http://localhost:8088"
# 登录获取 Token
login_resp = requests.post(
f"{SUPERSET_URL}/api/v1/security/login",
json={"username": "admin", "password": "admin", "provider": "db"}
)
access_token = login_resp.json()["access_token"]
headers = {"Authorization": f"Bearer {access_token}"}
# 获取数据库连接列表
db_resp = requests.get(f"{SUPERSET_URL}/api/v1/database/", headers=headers)
for db in db_resp.json()["result"]:
print(f"Database: {db['database_name']}, ID: {db['id']}")
# 执行 SQL 查询(通过 SQL Lab API)
sql_result = requests.post(
f"{SUPERSET_URL}/api/v1/sqllab/execute/",
headers=headers,
json={
"database_id": 1,
"sql": "SELECT sale_date, SUM(amount) as total FROM sales GROUP BY sale_date",
"schema": "public"
}
)
print(sql_result.json())
# 获取图表列表
charts_resp = requests.get(f"{SUPERSET_URL}/api/v1/chart/", headers=headers)
for chart in charts_resp.json()["result"][:5]: # 切片操作:[start:end:step]提取子序列
print(f"Chart: {chart['slice_name']}, Type: {chart['viz_type']}")
10.5 练习题¶
基础题¶
- 选择题
-
数据可视化的核心价值不包括什么?
- A. 快速理解
- B. 洞察发现
- C. 数据存储
- D. 沟通有效
-
简答题
- 解释数据可视化的类型。
- 说明Tableau的核心特性。
进阶题¶
- 实践题
- 使用Tableau创建仪表板。
- 使用Looker创建数据查询。
-
使用Superset创建图表。
-
设计题
- 设计一个销售仪表板。
- 设计一个实时监控仪表板。
答案¶
1. 选择题答案¶
- C(数据可视化的核心价值不包括数据存储)
2. 简答题答案¶
数据可视化的类型: - 比较类、趋势类、分布类、关系类
Tableau的核心特性: - 拖拽式操作、丰富图表、数据连接
3. 实践题答案¶
参见10.2-10.4节的示例。
4. 设计题答案¶
参见10.1-10.4节的设计原则。
10.6 面试准备¶
大厂面试题¶
字节跳动¶
- 解释数据可视化的核心概念。
- 如何设计有效的仪表板?
- 数据可视化的最佳实践是什么?
- 如何处理大数据量的可视化?
腾讯¶
- Tableau和Looker的区别是什么?
- 如何选择合适的可视化工具?
- 如何设计交互式仪表板?
- 如何优化可视化性能?
阿里云¶
- 数据可视化的设计原则是什么?
- 如何设计实时数据可视化?
- 如何处理可视化中的数据隐私?
- 如何设计可视化的扩展性?
📚 参考资料¶
- Tableau文档:https://help.tableau.com/
- Looker文档:https://docs.looker.com/
- Superset文档:https://superset.apache.org/docs/
- 《Data Visualization》
🎯 本章小结¶
本章深入讲解了数据可视化,包括:
- 数据可视化的核心概念
- Tableau的使用
- Looker和Superset
- 数据可视化设计原则
通过本章学习,你掌握了数据可视化的核心技术,能够创建生产级的数据可视化。下一章将深入学习数据管道。