Amazon Bedrock Workshop数据故事生成:可视化报告自动化技术
在数据分析领域,将复杂数据转化为直观易懂的可视化报告是提升决策效率的关键。Amazon Bedrock Workshop提供了一套完整的技术框架,结合大语言模型(LLM)与多模态生成能力,实现从原始数据到可视化报告的全流程自动化。本文将以旅行数据为例,详细介绍如何利用Bedrock的文本生成、图像生成和开源工具链,构建数据故事生成流水线。
数据准备与分析
数据故事生成的基础是高质量的结构化数据。在06_OpenSource_examples/data/synthetic_travel_data.csv中,包含了375条旅行记录,涵盖用户ID、旅行目的地、航班信息等字段。该数据集呈现以下特点:
- 包含重复字段(如"Past_Travel_Destinations"出现两次)
- 存在空值记录(如第4行无用户信息)
- 目的地数据格式不一致(部分包含多个城市)
使用Pandas进行数据清洗的核心代码示例:
import pandas as pd
# 读取原始数据
df = pd.read_csv("06_OpenSource_examples/data/synthetic_travel_data.csv")
# 处理重复列
df = df.loc[:, ~df.columns.duplicated()]
# 填充缺失值
df['Id'] = df['Id'].ffill() # 向前填充用户ID
# 拆分多目的地字段
df['Past_Travel_Destinations'] = df['Past_Travel_Destinations'].str.split(', ')
数据清洗后可通过Matplotlib生成基础统计图表,如各年龄段旅行次数分布。Bedrock的文本生成能力可自动分析图表特征,生成描述性结论,相关实现可参考03_Model_customization/bedrock-models-fine-tuning/amazon-nova/01_fine-tune_Amazon_Nova.ipynb中的数据分析模块。
多模态可视化生成
Amazon Bedrock的多模态能力是数据故事可视化的核心。Nova Canvas模型支持从文本描述生成高质量图表,其工作流程包括:
- 数据洞察提取:使用Claude模型分析统计结果,生成可视化需求描述
- 图像生成:调用Nova Canvas API将文本转化为可视化图像
- 布局优化:通过Bedrock Converse API调整图表布局与配色
以下是生成旅行趋势热力图的示例代码:
import boto3
import matplotlib.pyplot as plt
bedrock = boto3.client("bedrock-runtime")
# 1. 生成可视化需求描述
prompt = f"分析数据后生成需求: {df.groupby('Departure_City')['Number_of_Trips'].sum().nlargest(10)}"
response = bedrock.invoke_model(
modelId="anthropic.claude-3-sonnet-20240229-v1:0",
body=json.dumps({"prompt": prompt})
)
viz_prompt = json.loads(response['body'].read())['content'][0]['text']
# 2. 生成可视化图像
response = bedrock.invoke_model(
modelId="amazon.nova-canvas-v1",
body=json.dumps({
"text_prompts": [{"text": viz_prompt}],
"cfg_scale": 7.5,
"steps": 50
})
)
with open("travel_trend_heatmap.png", "wb") as f:
f.write(response['body'].read())
Nova Canvas支持多种可视化类型,包括折线图、柱状图、热力图等,通过调整text_prompts参数可控制图表样式。进阶用法可参考04_Image_and_Multimodal/2_nova-canvas-lab.ipynb中的图像生成与编辑章节。
报告自动化流水线
完整的报告自动化系统需要整合数据处理、可视化生成和文档编排。基于LangGraph构建的多智能体架构可实现这一流程的端到端自动化:
流水线主要包含以下智能体:
- 数据处理智能体:使用Pandas清洗数据(代码位于06_OpenSource_examples/utils.py)
- 分析智能体:调用Bedrock模型生成洞察(基于01_Text_generation/01_text_and_code_generation_w_bedrock.ipynb)
- 可视化智能体:生成图表与图像(参考04_Image_and_Multimodal/2_nova-canvas-lab.ipynb)
- 文档编排智能体:整合内容生成PDF报告
部署该流水线的步骤:
- 安装依赖:
pip install -r 06_OpenSource_examples/requirements.txt - 配置AWS credentials
- 运行编排脚本:
python 06_OpenSource_examples/advance-langgraph-multi-agent-setup.ipynb
案例实践:旅行数据季度报告
以合成旅行数据为例,使用上述技术生成季度报告的关键步骤:
- 数据预处理:清洗06_OpenSource_examples/data/synthetic_travel_data.csv中的重复字段与缺失值
- 趋势分析:识别热门出发城市(如Paris、Berlin)和旅行高峰月份
- 可视化生成:创建包含以下元素的报告页面:
- 月度旅行次数折线图
- 目的地分布饼图
- 用户年龄-旅行次数散点图
- 洞察总结:自动生成关键发现,如"35-44岁用户占总旅行次数的32%"、"夏季旅行需求较冬季增长47%"等结论
完整实现可参考06_OpenSource_examples/advance-langgraph-multi-agent-setup.ipynb中的旅行数据分析案例,该案例展示了如何通过多智能体协作完成从原始数据到最终报告的全流程自动化。
技术优化与扩展
为提升报告自动化系统性能,可从以下方面优化:
- 模型选择策略:小数据集使用Claude Instant降低成本,复杂分析切换Claude Opus
- 缓存机制:对重复可视化需求使用02_Knowledge_Bases_and_RAG/1_create-kb-and-ingest-documents.ipynb构建知识库
- 定制化模板:通过03_Model_customization/bedrock-models-fine-tuning/amazon-nova/01_fine-tune_Amazon_Nova.ipynb微调模型生成符合企业风格的报告
扩展应用场景包括:
- 销售业绩自动报告
- 客户行为分析dashboard
- 供应链异常检测可视化
通过Amazon Bedrock Workshop提供的工具链,数据团队可将报告生成时间从数天缩短至小时级,同时提升可视化内容的专业性与吸引力。建议结合README.md中的最佳实践,进一步探索Bedrock在数据故事讲述中的潜力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考






