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 |
查看命令历史 |