Python数据可视化:Matplotlib教程

Matplotlib是Python中最受欢迎的数据可视化库之一,以其灵活性和敏捷性著称。本教程将带掌握如何使用Matplotlib来展示发现。从直方图到散点图,Matplotlib提供了丰富的颜色、主题、调色板等选项,以定制和个性化图表。无论是在进行机器学习项目的数据探索,还是仅仅想要创建引人注目的图表,Matplotlib都是一个有用的工具。

如果是Python世界的新手,强烈推荐参加以下流行的免费课程:

什么是Matplotlib

在深入文章的核心之前,先给Matplotlib一个正式的定义。如果是第一次听说Matplotlib,这是官方描述:

"Matplotlib是一个Python2D绘图库,能够在多种硬拷贝格式和跨平台的交互式环境中生成出版质量的图形。Matplotlib可以在Python脚本、Python和IPython shell、Jupyter笔记本、Web应用服务器以及四种图形用户界面工具包中使用。"

可以使用Matplotlib绘制各种图表和可视化。在本教程中,将探索Matplotlib Python库中最常见的图表。将首先理解手头的数据集,然后开始使用Matplotlib构建不同的图表,包括散点图和折线图!

将使用Matplotlib设计的可视化

将分析一个名为“食品需求预测”的项目。该项目的目标是预测客户在接下来的几周内将向公司下多少食品订单。当然,只会花时间在项目的探索阶段。

import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.style.use('seaborn')

在深入不同的可视化和图表类型之前,想花几分钟时间理解数据。这是机器学习管道的关键部分,应该全力以赴。

首先,想要找出客户从公司购买的最受欢迎食品项目。将使用Pandas的pivot_table函数来找出每个食品类别的总订单数:

table = pd.pivot_table(data=df, index='category', values='num_orders', aggfunc=np.sum)

接下来,将尝试使用柱状图来可视化这一点。柱状图最适合用于比较同一类别内分类值的数量。柱状图是使用matplotlib中的plt.bar()生成的:

plt.bar(table.index, table['num_orders']) plt.xticks(rotation=70) plt.xlabel('食品项目') plt.ylabel('售出数量') plt.title('最受欢迎的食品') plt.show()

在分析图表时,可以看到“饮料”是公司销售最受欢迎的食品项目。等等,这是因为它们几乎与所有餐食一起销售吗?“饭团”是最受欢迎的食品项目吗?让将总食品项目订单除以它出现的独一无二餐食数量。

现在让看看每个菜系的订单比例。饼图适合显示同一类别内项目的比例分布。

plt.pie(table['num_orders'], autopct='%1.1f%%', explode=[0.1]*len(table)) plt.title('各菜系订单比例') plt.show()

使用了plt.pie()来绘制饼图,并调整其参数使其更具吸引力。autopct参数用于在饼图中打印值,精确到1位小数。explode参数用于偏移意大利部分,使其从其余部分中脱颖而出。这让观众立即清楚地知道人们喜欢意大利食品!

既然正在讨论菜系,让看看哪种菜系最昂贵!为此,将使用箱线图。箱线图提供了将数值数据划分为不同组的统计信息。它有助于检测每个组中的异常值。

plt.boxplot(table['num_orders']) plt.title('各菜系价格分布') plt.show()

箱线图不显示每个组内数据点的分布。

谈到价格,否忘记了检查基础价格和结账价格?不用担心,将使用直方图来检查这一点。直方图通过将数据分割成不同的箱来显示数值数据的分布。这对于检查数据的偏斜性很有用。

plt.hist(table['num_orders'], bins=15) plt.title('订单基础价格分布') plt.show()

直方图与柱状图容易混淆。但请记住,直方图用于连续数据,而柱状图用于分类数据。

折线图有助于可视化数值在连续时间间隔内的趋势。公司的周销售额和月销售额如何变化?这是一个关键的商业问题,决定了营销策略的成功与否。

plt.plot(table['num_orders']) plt.title('公司销售额趋势') plt.show()

可以看到,随着周数和月份的增加,食品订单的数量呈上升趋势,尽管趋势不是很强。

plt.scatter(table['num_orders'], table['center_type']) plt.title('中心类型对订单数量的影响') plt.show()

结束语

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485