Python数据可视化
1.Python 数据可视化全指南 🚀
数据可视化是数据分析和机器学习的关键环节,Python 提供了丰富的可视化库,如 Matplotlib
、Seaborn
、Plotly
、Pandas
内置可视化等。以下是 Python 可视化的核心内容及最佳实践。
2. 基础可视化库
2.1 Matplotlib(基础绘图库)
Matplotlib 是 Python 最基础的绘图库,适用于静态 2D 图表,功能强大但语法较底层。
📌 常见图表
- 折线图 (
plt.plot
) - 柱状图 (
plt.bar
) - 直方图 (
plt.hist
) - 散点图 (
plt.scatter
)
📌 示例
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]
plt.plot(x, y, marker='o', linestyle='-', color='b', label='折线图')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')
plt.title('Matplotlib 折线图示例')
plt.legend()
plt.show()
2.2 Seaborn(统计绘图)
Seaborn 基于 Matplotlib,适用于统计分析,默认提供更美观的主题风格。
📌 常见图表
- 直方图 (
sns.histplot
) - 箱线图 (
sns.boxplot
) - 相关性热力图 (
sns.heatmap
) - 分布图 (
sns.kdeplot
)
📌 示例
import seaborn as sns
import matplotlib.pyplot as plt
# 生成数据
tips = sns.load_dataset('tips')
# 画出总账单与小费的关系(散点图)
sns.scatterplot(data=tips, x='total_bill', y='tip', hue='sex')
plt.title('Seaborn 散点图示例')
plt.show()
2.3 Pandas 内置可视化
Pandas 结合 Matplotlib 进行快速可视化,适用于数据分析。
📌 示例
import pandas as pd
import matplotlib.pyplot as plt
# 生成数据
df = pd.DataFrame({'A': range(1, 11), 'B': [3, 5, 7, 9, 11, 15, 17, 19, 21, 25]})
df.plot(x='A', y='B', kind='line', marker='o', title='Pandas 折线图')
plt.show()
3. 交互式可视化
3.1 Plotly(高级交互图表)
Plotly 适用于交互式数据分析,支持 2D 和 3D 图表,适合 Web 可视化。
📌 示例
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x='sepal_width', y='sepal_length', color='species', title='Plotly 交互式散点图')
fig.show()
3.2 Bokeh(Web 端可视化)
Bokeh 适用于浏览器端可视化,交互性强。
📌 示例
from bokeh.plotting import figure, show
from bokeh.io import output_notebook
output_notebook()
p = figure(title="Bokeh 折线图", x_axis_label='x', y_axis_label='y')
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], line_width=2)
show(p)
4. 进阶可视化
4.1 相关性热力图
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('iris')
corr = df.corr()
plt.figure(figsize=(8,6))
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('相关性热力图')
plt.show()
4.2 词云
from wordcloud import WordCloud
import matplotlib.pyplot as plt
text = "Python 数据可视化 Matplotlib Seaborn Plotly Pandas Bokeh"
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)
plt.figure(figsize=(10,5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
5.3D 可视化
5.1 Matplotlib 3D 绘图
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
ax.plot_surface(X, Y, Z, cmap='viridis')
plt.title("3D 曲面图")
plt.show()
6. 地图可视化
6.1 Folium(地理地图)
import folium
# 创建地图
m = folium.Map(location=[34.0522, -118.2437], zoom_start=10)
# 添加标记
folium.Marker([34.0522, -118.2437], popup='Los Angeles', tooltip='点击查看').add_to(m)
# 显示地图
m
7.总结
库 | 适用场景 | 交互性 | 适用人群 |
---|---|---|---|
Matplotlib | 基础绘图 | ❌ | 初学者 |
Seaborn | 统计分析 | ❌ | 数据分析师 |
Pandas | 快速可视化 | ❌ | 数据科学家 |
Plotly | 交互式可视化 | ✅ | Web 开发者 |
Bokeh | 高级交互 | ✅ | 数据工程师 |
Folium | 地理地图 | ✅ | GIS 开发 |
🎯 推荐路径:
- 初学者:先学
Matplotlib
和Seaborn
。 - 数据分析:熟悉
Pandas
和Seaborn
。 - Web 可视化:掌握
Plotly
和Bokeh
。 - 地理信息可视化:学习
Folium
。