"大家好!最近在整理技术资料时发现,很多小伙伴都在问如何系统学习Python——从基础语法到爬虫开发,从数据分析到AI应用,不同阶段的学习路径和资源选择确实容易让人迷茫。

今天特意为大家准备了一份经过筛选的Python学习资料包,包含:
✅ 30本经典电子书(从入门到进阶)
✅ 100+实战项目源码
✅ 人工智能入门课程(限时免费)
✅ 编程思维训练手册

无论你是零基础小白还是想提升的开发者,这些资料都能帮你节省大量搜索时间。领取方式非常简单——文末准备了我的名片,扫码即可获取全部资源,还能加入Python学习交流群和同行一起成长!"
————————————————

  

使用Pandas内置的绘图功能  

Pandas基于Matplotlib封装了便捷的绘图接口,使数据可视化变得异常简单。.plot()方法能够智能识别DataFrame结构并生成合适的图表。

基础绘图功能

import pandas as pdimport numpy as npimport matplotlib.pyplot as plt
# 创建示例数据np.random.seed(42)df = pd.DataFrame({    '销售额': np.random.randint(100, 500, 12).cumsum(),    '利润': np.random.randint(20, 80, 12).cumsum()}, index=pd.date_range('2023-01-01', periods=12, freq='M'))
# 基本折线图df.plot(title='2023年月度业绩趋势',        figsize=(10, 6),       style=['-o', '--s'],  # 线条样式       linewidth=2,       markersize=8)plt.ylabel('金额(万元)')plt.grid(True, alpha=0.3)plt.show()

多种图表类型

# 柱状图df.plot.bar(title='2023年月度业绩对比',             figsize=(10, 6),            color=['#3498db', '#2ecc71'],  # 自定义颜色            alpha=0.8,            rot=45)  # x轴标签旋转角度plt.ylabel('金额(万元)')plt.grid(axis='y', alpha=0.3)plt.show()
# 面积图df.plot.area(title='2023年月度业绩构成',              figsize=(10, 6),             alpha=0.4,             stacked=False)  # 非堆叠模式plt.ylabel('金额(万元)')plt.grid(True, alpha=0.3)plt.show()

专业技巧

# 多子图绘制axes = df.plot(subplots=True,                figsize=(10, 8),               layout=(2, 1),               sharex=True,               title=['销售额趋势', '利润趋势'],               style=['-o', '--s'])plt.tight_layout()plt.show()
# 箱线图(自动按列绘制)df.plot.box(title='业绩分布分析',            figsize=(8, 6),            vert=False,  # 水平箱线图            patch_artist=True)  # 填充颜色plt.xlabel('金额(万元)')plt.show()

与Matplotlib结合进行高级绘图  

虽然Pandas绘图便捷,但结合Matplotlib可以实现更精细的控制和更专业的可视化效果。

双坐标轴图表

fig, ax1 = plt.subplots(figsize=(10, 6))
# 第一个y轴(销售额)color = '#3498db'ax1.set_xlabel('月份')ax1.set_ylabel('销售额(万元)', color=color)ax1.plot(df.index, df['销售额'], color=color, marker='o')ax1.tick_params(axis='y', labelcolor=color)ax1.grid(True, alpha=0.3)
# 第二个y轴(利润率)ax2 = ax1.twinx()color = '#e74c3c'ax2.set_ylabel('利润率(%)', color=color)# 计算利润率(示例)profit_rate = (df['利润']/df['销售额']*100).valuesax2.plot(df.index, profit_rate, color=color, marker='s', linestyle='--')ax2.tick_params(axis='y', labelcolor=color)
plt.title('2023年销售额与利润率趋势', pad=20)fig.tight_layout()plt.show()

专业金融图表

from mplfinance.original_flavor import candlestick_ohlcimport matplotlib.dates as mdates
# 准备股票数据np.random.seed(42)dates = pd.date_range('2023-01-01', periods=20)open_prices = np.random.normal(100, 5, 20).cumsum()high_prices = open_prices + np.random.uniform(1, 3, 20)low_prices = open_prices - np.random.uniform(1, 3, 20)close_prices = open_prices + np.random.normal(0, 1, 20)
# 转换为OHLC格式data = pd.DataFrame({    'Open': open_prices,    'High': high_prices,    'Low': low_prices,    'Close': close_prices}, index=dates)
# 创建专业K线图fig, ax = plt.subplots(figsize=(12, 6))
# 转换日期格式data['Date'] = mdates.date2num(data.index.to_pydatetime())ohlc = data[['Date', 'Open', 'High', 'Low', 'Close']].values
# 绘制K线candlestick_ohlc(ax, ohlc, width=0.6,                  colorup='r', colordown='g', alpha=0.8)
# 添加移动平均线data['MA5'] = data['Close'].rolling(5).mean()ax.plot(data['Date'], data['MA5'], 'b-', label='5日均线')
# 图表装饰ax.xaxis_date()  # 将x轴转换为日期格式ax.xaxis.set_major_formatter(mdates.DateFormatter('%m-%d'))plt.xticks(rotation=45)plt.title('股票K线图示例', fontsize=14)plt.ylabel('价格(元)')plt.legend()plt.grid(True, alpha=0.3)plt.tight_layout()plt.show()

与Seaborn结合进行统计图形绘制  

Seaborn是基于Matplotlib的高级统计可视化库,特别适合数据分布和关系分析。  

分布可视化

import seaborn as sns
# 设置Seaborn风格sns.set_style("whitegrid")sns.set_palette("husl")
# 创建示例数据tips = sns.load_dataset("tips")
# 分布图(直方图+KDE)plt.figure(figsize=(10, 6))sns.histplot(data=tips, x="total_bill", kde=True,             bins=20, alpha=0.6)plt.title('消费金额分布', fontsize=14)plt.xlabel('消费金额(美元)')plt.ylabel('频次')plt.show()
# 小提琴图(展示分布密度)plt.figure(figsize=(10, 6))sns.violinplot(data=tips, x="day", y="total_bill",               hue="sex", split=True,               inner="quartile")plt.title('不同性别每日消费分布', fontsize=14)plt.xlabel('星期')plt.ylabel('消费金额(美元)')plt.legend(title='性别')plt.show()

关系分析

# 散点图矩阵sns.pairplot(tips, hue="time",              palette="Set2",             height=2.5,             corner=True)  # 只显示下三角plt.suptitle('消费数据关系矩阵', y=1.02)plt.show()
# 热力图(相关性分析)plt.figure(figsize=(8, 6))corr = tips.corr(numeric_only=True)sns.heatmap(corr, annot=True, fmt=".2f",            cmap="coolwarm",            linewidths=.5,            cbar_kws={'label': '相关系数'})plt.title('消费数据相关性分析', fontsize=14)plt.xticks(rotation=45)plt.yticks(rotation=0)plt.show()

高级统计图表

# 回归分析图plt.figure(figsize=(10, 6))sns.regplot(data=tips, x="total_bill", y="tip",            scatter_kws={'alpha':0.5},            line_kws={'color':'red'})plt.title('消费金额与小费金额关系', fontsize=14)plt.xlabel('消费金额(美元)')plt.ylabel('小费金额(美元)')plt.grid(True, alpha=0.3)plt.show()
# 分面网格(FacetGrid)g = sns.FacetGrid(tips, col="time", row="smoker",                  margin_titles=True,                  height=4)g.map(sns.scatterplot, "total_bill", "tip", alpha=0.7)g.fig.suptitle('不同场景下消费金额与小费关系', y=1.03)plt.tight_layout()plt.show()

三库结合的综合案例

# 创建综合可视化面板plt.figure(figsize=(16, 12))
# 子图1:Pandas折线图plt.subplot(2, 2, 1)df.plot(ax=plt.gca(), style=['-o', '--s'], linewidth=2)plt.title('Pandas折线图')plt.grid(True, alpha=0.3)
# 子图2:Matplotlib高级图表plt.subplot(2, 2, 2)ax1 = plt.gca()ax1.plot(df.index, df['销售额'], 'b-o', label='销售额')ax1.set_ylabel('销售额(万元)', color='b')ax1.tick_params(axis='y', labelcolor='b')ax1.grid(True, alpha=0.3)
ax2 = ax1.twinx()ax2.plot(df.index, profit_rate, 'r--s', label='利润率')ax2.set_ylabel('利润率(%)', color='r')ax2.tick_params(axis='y', labelcolor='r')plt.title('Matplotlib双坐标轴图')lines1, labels1 = ax1.get_legend_handles_labels()lines2, labels2 = ax2.get_legend_handles_labels()ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left')
# 子图3:Seaborn分布图plt.subplot(2, 2, 3)sns.violinplot(data=tips, x="day", y="total_bill", hue="sex", split=True)plt.title('Seaborn小提琴图')plt.legend(title='性别')
# 子图4:Seaborn关系图plt.subplot(2, 2, 4)sns.scatterplot(data=tips, x="total_bill", y="tip",                hue="time", style="sex", size="size",               sizes=(20, 200), alpha=0.7)plt.title('Seaborn多维度散点图')plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()plt.show()

专业建议与最佳实践  

工具选择原则

快速探索:优先使用Pandas内置绘图 

统计可视化:首选Seaborn 

高度定制化:使用Matplotlib底层API 

性能优化

# 大数据集优化plt.plot(large_data.index, large_data.values, '-', rasterized=True)

样式统一

# 全局样式设置plt.style.use('seaborn')plt.rcParams.update({    'font.size': 12,    'axes.titlesize': 14,    'axes.labelsize': 12})

交互式可视化

# 启用交互模式plt.ion()# 绘制图表后保持交互plt.show(block=True)

输出专业报告

# 保存高质量图片plt.savefig('professional_plot.png',            dpi=300,            bbox_inches='tight',           transparent=True)

通过掌握Pandas、Matplotlib和Seaborn这三大可视化工具的组合使用,我们就能够高效地从数据探索过渡到专业报告制作,满足不同场景下的数据可视化需求。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐