【Python 数据分析与可视化】全面指南(2026 最新版)
这是一篇从入门到进阶、结构化的实战指南,适合数据分析师、数据科学家、业务分析师和 Python 爱好者。
1. 核心技术栈(2026 年推荐)
| 层级 | 库/工具 | 主要用途 | 推荐程度 |
|---|---|---|---|
| 基础 | NumPy | 数组计算 | ★★★★★ |
| 核心 | pandas | 数据清洗、处理、分析 | ★★★★★ |
| 可视化基础 | Matplotlib | 底层绘图 | ★★★★★ |
| 可视化进阶 | Seaborn | 统计图表、美观样式 | ★★★★★ |
| 交互可视化 | Plotly / Plotly Express | 交互式图表、仪表盘 | ★★★★★ |
| 现代可视化 | Altair、Polars + Great Tables | 声明式、极速 DataFrame | ★★★★ |
| 科学计算 | SciPy、Statsmodels | 统计检验、建模 | ★★★★ |
| 机器学习 | scikit-learn | 基础建模 | ★★★★★ |
| 大数据 | Polars、Dask、PySpark | 超大数据集 | ★★★★ |
安装推荐(使用 conda 或 uv 更快):
# 推荐方式
conda create -n data python=3.11
conda activate data
pip install pandas numpy matplotlib seaborn plotly jupyter polars[all] scikit-learn
2. 数据分析完整工作流(CRISP-DM 简化版)
- 定义问题 → 2. 数据获取 → 3. 数据清洗 → 4. 探索性分析 (EDA) → 5. 特征工程 → 6. 建模/可视化 → 7. 解读与沟通
3. pandas 核心操作(最常用)
import pandas as pd
import numpy as np
# 读取数据
df = pd.read_csv('data.csv', parse_dates=['date'])
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 基本信息
df.head()
df.info()
df.describe(include='all')
df.shape
# 选择数据
df[['col1', 'col2']]
df.loc[:, 'col1':'col3']
df.iloc[0:10, [0, 2]]
# 清洗
df.dropna(subset=['col'])
df.fillna(value)
df.drop_duplicates()
# 转换
df['new_col'] = df['col1'] + df['col2']
df['date'] = pd.to_datetime(df['date'])
# 分组与聚合
df.groupby('category').agg({
'sales': ['sum', 'mean', 'count'],
'profit': 'max'
}).round(2)
2026 新趋势:强烈建议学习 Polars(速度远超 pandas):
import polars as pl
df = pl.read_csv('data.csv')
4. 探索性数据分析(EDA)关键技巧
- 单变量分析:直方图、箱线图、频数统计
- 多变量分析:散点图、相关性热力图、成对关系图
- 时间序列:趋势、季节性、异常点
# 相关性热力图
import seaborn as sns
import matplotlib.pyplot as plt
corr = df.select_dtypes(include='number').corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0)
plt.title('Correlation Heatmap')
plt.show()
5. 可视化全家桶
Matplotlib + Seaborn(基础必会)
sns.set_style("whitegrid") # 美化样式
# 常用图表
sns.histplot(data=df, x='sales', hue='category', kde=True)
sns.boxplot(x='category', y='sales', data=df)
sns.scatterplot(x='advertising', y='sales', hue='region', data=df)
sns.lineplot(x='date', y='sales', data=df)
Plotly 交互式可视化(强烈推荐)
import plotly.express as px
fig = px.scatter(df, x='GDP', y='Life Expectancy',
color='Continent', size='Population',
hover_name='Country',
title='Global Development')
fig.show()
# 仪表盘级图表
fig = px.treemap(df, path=['continent', 'country'], values='population')
其他高级图表:
- 桑基图(Sankey):用户路径分析
- 地理可视化:
px.choropleth、folium、geopandas - 3D / 动画:Plotly 支持
6. 完整项目实战流程示例
# 1. 导入
import pandas as pd
import seaborn as sns
import plotly.express as px
# 2. 加载与清洗
df = pd.read_csv('sales_data.csv')
df = df.dropna().drop_duplicates()
# 3. 特征工程
df['profit_margin'] = df['profit'] / df['sales'] * 100
df['year_month'] = df['date'].dt.to_period('M')
# 4. EDA
print(df.describe())
sns.pairplot(df[['sales', 'profit', 'advertising']])
# 5. 关键洞察可视化
monthly = df.groupby('year_month')['sales'].sum().reset_index()
px.line(monthly, x='year_month', y='sales', title='月度销售趋势').show()
# 6. 导出报告
df.to_excel('report.xlsx', index=False)
7. 进阶与生产化建议
- 性能优化:大数据用 Polars 或 DuckDB
- 自动化报告:
pandas-profiling/ydata-profiling、Sweetviz、AutoViz - 仪表盘:
- Streamlit(最快上手)
- Dash / Gradio
- Power BI + Python 脚本
- 版本控制与复现:Jupyter +
requirements.txt或uv.lock、DVC - 统计建模:Statsmodels(回归、时间序列)、Pingouin(统计检验)
8. 学习路径推荐(3 阶段)
阶段 1(1-2 周):NumPy + pandas + Matplotlib/Seaborn
阶段 2(2-4 周):EDA + Plotly + 真实项目(Kaggle)
阶段 3(持续):Polars + Streamlit 仪表盘 + 统计建模 + 大数据工具
优秀练习数据集:
- Titanic(入门)
- House Prices(特征工程)
- Superstore Sales(商业分析)
- COVID-19 / Global Development(多维度)
资源推荐(2026):
- 官方文档:pandas.pydata.org、plotly.com
- 书籍:《Python for Data Analysis》(Wes McKinney)
- 课程:Kaggle 免费课程、DeepLearning.AI 数据分析专项
- 中文社区:Datawhale、掘金
需要我立即为你展开某个具体章节吗?例如:
- pandas 100 道高频操作
- Seaborn vs Plotly 完整对比
- Streamlit 交互式数据仪表盘实战
- Polars 极速替代 pandas
- 商业数据分析报告模板(销售/用户/财务)
告诉我你的当前水平(入门/中级/项目实战)和具体需求,我可以立刻给你更针对性的深度内容!