交互式数据分析 Notebook——从数据到可视化

知识库
知识库文档
/tech-stacks/jupyter/examples/交互式数据分析 Notebook——从数据到可视化.md

文档

Jupyter 例程:交互式数据分析工作流

目标

展示 Jupyter Notebook 典型用法:数据加载、清洗、可视化、结论——一个 Cell 一个步骤。

完整 Notebook 内容

将以下内容保存为 data_analysis.ipynb 或在 JupyterLab 中逐 Cell 执行。

Cell 1: Markdown

# 全球人口数据分析

本 Notebook 分析世界银行人口数据,展示 Jupyter 在探索性数据分析中的核心用法。

Cell 2: 导入库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False

sns.set_style('whitegrid')
print('✅ 环境准备就绪')

Cell 3: 加载数据

# 模拟世界银行格式的人口数据
data = {
    'Country': ['中国', '印度', '美国', '印尼', '巴基斯坦', '巴西', '尼日利亚', '孟加拉国', '俄罗斯', '墨西哥'],
    'Population_M': [1402, 1380, 331, 273, 220, 213, 206, 164, 146, 128],
    'GDP_B': [17734, 3176, 25346, 1289, 376, 2080, 477, 460, 2240, 1466],
    'Area_KM2': [9597, 3287, 9834, 1905, 881, 8516, 924, 148, 17098, 1964],
}
df = pd.DataFrame(data)

# 派生列
df['Density'] = df['Population_M'] * 1e6 / df['Area_KM2']  # 人/km²
df['GDP_Per_Capita'] = df['GDP_B'] * 1e9 / (df['Population_M'] * 1e6)

df.head(10)

Cell 4: 数据探查

# 魔术命令:测量执行时间
%time df.describe()
# 显示 DataFrame 信息
df.info()
print(f"\n数据形状: {df.shape}")
print(f"总人口(百万): {df['Population_M'].sum():,.0f}")

Cell 5: 可视化——人口 vs GDP

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# 气泡图
scatter = axes[0].scatter(
    df['GDP_Per_Capita'], df['Density'],
    s=df['Population_M'] / 5,  # 气泡大小 = 人口
    c=range(len(df)), cmap='viridis', alpha=0.7, edgecolors='black'
)
for i, row in df.iterrows():
    axes[0].annotate(row['Country'], (row['GDP_Per_Capita'], row['Density']),
                     fontsize=8, ha='center')
axes[0].set_xlabel('人均 GDP(美元)')
axes[0].set_ylabel('人口密度(人/km²)')
axes[0].set_title('人口密度 vs 人均 GDP(气泡=人口)')

# 柱状图 TOP5
top5 = df.nlargest(5, 'Population_M')
axes[1].barh(top5['Country'], top5['Population_M'], color='steelblue')
axes[1].set_xlabel('人口(百万)')
axes[1].set_title('人口 TOP5 国家')
axes[1].invert_yaxis()

plt.tight_layout()
plt.show()

Cell 6: 结论

# 使用 IPython 的 Markdown 渲染
from IPython.display import Markdown

richest = df.loc[df['GDP_Per_Capita'].idxmax()]
poorest = df.loc[df['GDP_Per_Capita'].idxmin()]

Markdown(f"""
## 📊 分析结论

- **人口最多**:{df.loc[df['Population_M'].idxmax(), 'Country']}
- **人均 GDP 最高**:{richest['Country']} (\${richest['GDP_Per_Capita']:,.0f})
- **人均 GDP 最低**:{poorest['Country']} (\${poorest['GDP_Per_Capita']:,.0f})
- **差距倍数**:{richest['GDP_Per_Capita'] / poorest['GDP_Per_Capita']:.1f}x
""")

魔术命令速查

命令 说明
%timeit 测量代码执行时间
%matplotlib inline 图表内嵌显示
%who 列出当前所有变量
%%bash 执行 Bash 命令
%debug 进入调试模式
%history 查看命令历史

信息

路径
/tech-stacks/jupyter/examples/交互式数据分析 Notebook——从数据到可视化.md
更新时间
2026/5/31