PROJECT 10高级
AI 辅助数据自动化分析与故事化报告
Automated Data Storytelling
使用 pivot_table 构建自动化分析摘要,将数据转化为可读的故事化报告。
pivot_table自动化摘要数据故事化模板引擎关键洞察提取
项目背景
某零售企业每周需要向管理层提交经营分析报告。传统手动制作 PPT 耗时耗力且容易出错。希望通过 Pandas 自动生成分析摘要,结合数据故事化模板,快速生成可读性强的分析报告。
模拟数据集
date,store,category,product,revenue,units,returns,customer_satisfaction
2024-07-01,北京旗舰店,电子产品,iPhone 15,299900,100,3,4.5
2024-07-01,北京旗舰店,电子产品,AirPods,59900,50,2,4.3
2024-07-01,北京旗舰店,配件,手机壳,15000,500,10,3.8
2024-07-01,上海旗舰店,电子产品,iPhone 15,359880,120,5,4.6
2024-07-01,上海旗舰店,电子产品,MacBook,899000,100,1,4.8
2024-07-02,北京旗舰店,电子产品,iPhone 15,329890,110,2,4.7
2024-07-02,上海旗舰店,配件,充电宝,8000,400,5,3.5
2024-07-02,广州旗舰店,电子产品,iPhone 15,269910,90,4,4.2代码练习区
在下方编辑器中编写你的 Pandas 代码。可记录笔记、编写伪代码,参考答案在下方。
pandas_exercise.py
Loading...
参考答案
reference_solution.py
import pandas as pd
import numpy as np
df = pd.read_csv('retail_data.csv')
df['date'] = pd.to_datetime(df['date'])
# 1. 多维透视表
# 按门店 x 品类的收入透视
store_category = pd.pivot_table(df, values='revenue',
index='store', columns='category',
aggfunc='sum', fill_value=0)
# 按日期 x 产品的销量透视
daily_sales = pd.pivot_table(df, values='units',
index='date', columns='product',
aggfunc='sum', fill_value=0)
# 2. 自动关键指标提取
total_revenue = df['revenue'].sum()
total_units = df['units'].sum()
avg_satisfaction = df['customer_satisfaction'].mean()
return_rate = df['returns'].sum() / df['units'].sum() * 100
# 3. 最佳/最差门店
store_performance = df.groupby('store').agg(
revenue=('revenue', 'sum'),
units=('units', 'sum'),
satisfaction=('customer_satisfaction', 'mean')
).sort_values('revenue', ascending=False)
best_store = store_performance.index[0]
worst_store = store_performance.index[-1]
# 4. 自动生成报告模板
report = f"""
== 周度经营分析报告 ==
【核心指标】
总营收: ¥{total_revenue:,.0f}
总销量: {total_units:,} 件
平均满意度: {avg_satisfaction:.1f}/5.0
退货率: {return_rate:.1f}%
【门店表现】
最佳门店: {best_store} (营收 ¥{store_performance.iloc[0]['revenue']:,.0f})
待改善门店: {worst_store} (营收 ¥{store_performance.iloc[-1]['revenue']:,.0f})
【趋势洞察】
{generate_insights(df)}
== 报告生成时间: {pd.Timestamp.now().strftime('%Y-%m-%d %H:%M')} ==
"""
def generate_insights(df):
insights = []
daily_trend = df.groupby('date')['revenue'].sum()
if daily_trend.iloc[-1] > daily_trend.iloc[0]:
insights.append(f"营收呈上升趋势,从 ¥{daily_trend.iloc[0]:,.0f} 增长至 ¥{daily_trend.iloc[-1]:,.0f}")
top_product = df.groupby('product')['revenue'].sum().idxmax()
insights.append(f"{top_product} 是最畅销产品")
return "\n".join(insights)业务解读
自动化报告的核心价值不在于 '替代人工',而在于 '释放分析时间'。将重复的数据汇总自动化,分析师可以将更多时间投入到深度洞察和业务策略上。数据故事化 (Data Storytelling) 强调用 '管理层能听懂的语言' 呈现数据,而非堆砌图表。'退货率超过 5%' 比 '退货字段均值为 3.2' 更有业务价值。