一、魔法命令:提升效率的"快捷键"
1. 代码计时:%timeit与%%time的"性能仪表盘"
场景 :比较两种数据清洗方法的效率,需要精确测量执行时间。
用法:
python
# 行魔法:测量单行代码(自动运行多次取平均) %timeit df.groupby('category')['value'].mean() # 单元魔法:测量整个单元格(运行一次,适合耗时操作) %%time result = [] for category in df['category'].unique(): subset = df[df['category'] == category] result.append(subset['value'].mean())
优势 :比手动写time.time() 更简洁,支持毫秒级精度,帮你快速定位"慢代码"。
2. 文件操作:%%writefile与%run的"代码管理术"
场景 :将常用的数据预处理函数保存到外部文件,方便复用。
用法:
python
# 单元魔法:将单元格内容写入.py文件 %%writefile utils.py import pandas as pd def clean_data(df): return df.dropna().drop_duplicates() # 行魔法:运行外部脚本 %run utils.py # 导入clean_data函数 df = pd.read_csv('data.csv') clean_df = clean_data(df) # 直接使用外部函数
二、交互式数据清洗:边改边看的"即时反馈"
1. 缺失值处理:用交互式表格快速预览
痛点 :传统脚本需要df.isnull().sum() 打印缺失值,不够直观。
解决方案 :启用qgrid插件(需安装pip install qgrid):
python
import qgrid qgrid_widget = qgrid.show_grid(df) # 生成交互式表格 qgrid_widget # 在Notebook中显示,可直接筛选、编辑数据
操作:点击列头筛选缺失值,直接在表格中修改数据,实时同步到DataFrame。
2. 动态调试:%debug的"断点神器"
场景 :数据清洗时出现KeyError,想快速定位哪列名写错了。
用法:
python
# 运行代码,出错后自动进入调试模式 %debug # 在调试界面输入变量名查看值,如"df.columns "检查列名
三、交互式可视化:从"静态图片"到"动态探索"
1. Matplotlib动态刷新:%matplotlib notebook
场景 :绘制折线图后,想放大查看局部数据,静态图片无法交互。
解决方案:
python
%matplotlib notebook # 启用交互式图表(而非inline静态图) import matplotlib.pyplot as plt plt.plot(df['date'], df['value']) plt.title(' 动态图表:可缩放、平移')
操作:用鼠标拖动平移,滚轮缩放,点击工具栏保存图片。
2. Plotly交互式图表:悬停显示详情
场景 :展示销售数据时,想让读者鼠标悬停看到具体数值。
用法:
python
import plotly.express as px fig = px.bar(df, x='category', y='sales', title='各品类销售额') fig.update_layout(hovermode='x unified') # 悬停时显示详细数据 fig.show() # 在Notebook中生成交互式图表
效果:鼠标移到柱子上,自动显示"品类:家电,销售额:120万"等信息。
四、高级技巧:让Notebook"不止于分析"
1. 变量监控:%whos与variable inspector插件
场景 :分析过程中定义了多个DataFrame,忘记变量名和类型。
用法:
python
%whos # 列出当前所有变量(名称、类型、大小) # 输出示例: # Variable Type Data/Info # ------------------------------- # df DataFrame 10000 rows × 5 columns # clean_df DataFrame 8500 rows × 5 columns
进阶 :安装jupyter_contrib_nbextensions插件,启用"Variable Inspector",在侧边栏实时查看变量详情。
2. 文档撰写:Markdown+LaTeX的"分析报告一体化"
场景 :分析完成后,需要将代码、图表、结论整理成报告。
Markdown技巧:
-
标题:
# 一级标题## 二级标题 -
公式:
$y = x^2 + 3x + 5$(支持LaTeX语法) -
表格:
markdown| 品类 | 销售额 | |--------|--------| | 家电 | 120万 | | 数码 | 80万 |
五、实战案例:电商销售数据分析全流程
步骤1:数据加载与初览
python
import pandas as pd %matplotlib inline # 确保图表内联显示 df = pd.read_csv('sales.csv') df.head() # 查看前5行
步骤2:交互式清洗
python
# 检查缺失值 df.isnull().sum() # 用魔法命令快速填充 df['price'] = df['price'].fillna(df['price'].mean())
步骤3:动态分析
python
%%time # 测量分组聚合时间 sales_by_month = df.groupby('month')['revenue'].sum() sales_by_month.plot(kind='line') # 直接绘制趋势图
步骤4:交互式可视化
python
import plotly.express as px fig = px.scatter(df, x='traffic', y='revenue', color='category', title='流量与销售额关系') fig.show() # 可拖动、缩放的散点图