【Python】—— matplotlib数据可视化

简介: 【Python】—— matplotlib数据可视化

第1关:各省gdp的和生成条状图

任务描述

各省GDP的excel文件如图所示

编写一个程序,计算每年各省GDP信息的和,生成条状图显示

要求窗口大小10,10,图表标题为GDP条状图

相关知识

为了完成本关任务,你需要掌握:

  1. 数据汇总
  2. matplotlib库的使用
  3. 如何建立条状图
  4. 设置图表参数

Dataframe数据汇总

dataframe对象的Groupby可以根据一个或多个键对DataFrame计算分组摘要统计,count计数、sum求和、mean平均值、std标准差

例如,要将df对象数据按教师列汇总求学生的个数

df.groupby(["教师"])["学号"].count()

matplotlib库的使用

导入pyplot

import matplotlib.pyplot  as plt

在图表中显示中文

为了正确显示中文字体,请用以下代码更改默认设置,其中’SimHei’表示黑体字。

import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']

plt 库的显示函数

使用figure()函数创建一个全局绘图区域,并且使它成为当前的绘图对象,

figsize参数可以指定绘图区域的宽度和高度,单位为英寸。

例如

plt.figure(figsize=(8,4))
建立一个8英寸长4英寸宽的窗口

建立条形图

bar(x, height, alpha=1, width, color=, edgecolor=, label=, linewidth)

参数:

x:x轴的位置序列,一般采用arange函数产生一个序列;

height:y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据;

alpha:透明度

width:为柱形图的宽度

color:柱形图填充的颜色;

edgecolor:图形边缘颜色

label:解释每个图像代表的含义

linewidth :边缘线的宽度

import matplotlib
import matplotlib.pyplot as plt
x=["mary","mike","harry","tom","jerry","rose"]
y=[84.12,91.83,79.89,60.19,96.83,75.09]
#设置y轴的值
plt.bar(x,height=y,width=0.5, color='b')
#根据x和y绘制条形,条形宽度0.5,颜色蓝色
plt.show()

设置图表参数

plt.xlim(xmin,xmax)
设置当前x轴取值范围
plt.ylim(xmin,xmax)
设置当前y轴取值范围
plt.xlabel(s)
设置当前x轴的标签
plt.ylabel(s)
设置当前y轴的标签
plt.title()
设置标题

运行代码

import pandas
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 其中'SimHei'表示黑体字。
data=pandas.read_excel("test/各省GDP.xlsx",dtype={"年份":str})
#代码开始
df = data.groupby(["年份"])["GDP"].sum()
fig = plt.figure(figsize = (10,10))
plt.bar(df.index,df)
plt.title("GDP条状图")
plt.show()
#代码结束
plt.savefig("image1/gdptxt.jpg")

第2关:各省银行数量绘制饼图

任务描述

银行分布excel文件如图所示

编写一个程序,将银行信息按省份对银行编号进行汇总

生成饼图显示各省银行的个数

要求绘图窗口为10,10

标题为银行省份分布图

饼图外侧显示省份的前2个字

相关知识

绘制饼图

pie(x, explode=None, labels=None,colors=('b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'),    autopct=None, shadow=False,labeldistance=1.1, radius=None)

参数: x (每一块)的比例,如果sum(x) > 1会使用sum(x)归一化

labels (每一块)饼图外侧显示的说明文字

explode (每一块)离开中心距离

startangle 起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起

shadow是否阴影

labeldistance label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧

autopct 控制饼图内百分比设置,可以使用format字符串指小数点前后位数

radius 控制饼图半径

运行代码

import pandas
import matplotlib
matplotlib.use("agg")
import matplotlib.pyplot as plt
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
data=pandas.read_excel("test/银行信息.xlsx")
#代码开始
fig = plt.figure(figsize = (10,10))
ans = data.groupby(["省份"])["银行编号"].count()
plt.pie(ans,labels=ans.index.str[:2])#饼图外侧显示省份的前2个字
plt.title("银行省份分布图")
#代码结束
plt.savefig("image2/yhbt.jpg")

第3关:各类银行数量绘制折线图

任务描述

银行分布excel文件如图所示

编写一个程序,将银行信息按银行种类对银行编号进行汇总

生成折线图显示银行数量最高的十个银行

按银行种类个数的降序排列

要求绘图窗口为10,10

标题为银行种类折线图

折线图的绘制

折线图就是将多个(x,y)点连接起来,生成一个折线图。

plot([x], y, [fmt], data=None,**kwargs)

函数用于绘制一条折线图,x若省略,则plot函数自动创建从0开始的 x坐标;fmt是字符串类型,用于描述颜色标志线型属性的值,格式为:[color][marker][line]

运行代码

import pandas
import matplotlib
matplotlib.use("Agg")
import numpy as np
import matplotlib.pyplot as plt
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
data=pandas.read_excel("test/银行信息.xlsx")
#代码开始
ans=data.groupby(["银行种类"])["银行编号"].count()
ans=ans.sort_values(ascending=False)
ans=ans.head(10)
plt.figure(figsize=(10,10))
plt.plot(ans.index,ans)
plt.title("银行种类折线图")
#代码结束
plt.savefig("image3/yhzxt.jpg")

第4关:各日超市销售金额绘制折

任务描述

本关任务:根据统计数据工作簿的日期统计数据,建立折线图

相关知识

为了完成本关任务,你需要掌握:1.如何使用matplotlib生成图表,2.如何设置图表的参数。3.datetime的使用

matplotlib库的使用

导入pyplot
import matplotlib.pyplot  as plt
在图表中显示中文
为了正确显示中文字体,请用以下代码更改默认设置,其中'SimHei'表示黑体字。
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']

plt 库的显示函数

使用figure()函数创建一个全局绘图区域,并且使它成为当前的绘图对象,

figsize参数可以指定绘图区域的宽度和高度,单位为英寸。

例如

plt.figure(figsize=(8,4))
建立一个8英寸长4英寸宽的窗口

折线图的绘制

折线图就是将多个(x,y)点连接起来,生成一个折线图。

plot([x], y, [fmt], data=None,**kwargs)

函数用于绘制一条折线图,x若省略,则plot函数自动创建从0开始的 x坐标;fmt是字符串类型,用于描述颜色标志线型属性的值,格式为:'[color][marker][line]’

设置图表参数

设置标题、轴标签和刻度标签
plt.xlim(xmin,xmax)
设置当前x轴取值范围
plt.ylim(xmin,xmax)
设置当前y轴取值范围
plt.xlabel(s)
设置当前x轴的标签
plt.ylabel(s)
设置当前y轴的标签
plt.title()
设置标题
plt.xticks(pd.date_range(起始日期,结束日期))
设置x轴日期开始日期和结束日期
plt.gca().xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%Y-%m-%d'))
设置x轴日期格式

补充:pandas.date_range(start=None, end=None, periods=None, freq='D')

该函数主要用于生成一个固定频率的时间索引,在调用构造方法时,必须指定start、end、periods中的两个参数值,否则报错。

主要参数说明:

periods:固定时期,取值为整数或None

freq:日期偏移量,取值为string或DateOffset,默认为’D’

例:以下代码可以设置日期格式为年-月-日,设置x轴的取值范围为2021-1-1到2021-5-31日,在x轴垂直显示2021-1-1

到2021-5-31,

plt.gca().xaxis.set_major_formatter(datetime.date.DateFormatter('%Y-%m-%d'))
plt.xlim(datetime.date(2021,1,1),datetime.date(2021,5,31))
plt.xticks(pd.date_range('2021-1-1','2021-5-31'),rotation=90)

编程要求

根据提示,在右侧编辑器补充代码,根据统计数据工作簿的日期统计数据,建立折线图。

测试说明

平台会对你编写的代码进行测试:

产生的折线图如任务描述所示,x轴为日期,y轴为合计金额

图表窗口宽10高14

图表标题为日期销售

要求x轴设置标签为日期,范围为2000-5-20至2000-7-18,并显示日期

y轴设置标签为金额,范围为0到1800

提示:在绘制图形时日期标签需要垂直排列 设置rotation=90

运行代码

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import pandas as pd
import datetime
df=pd.read_excel("tbsc/step1/统计数据.xlsx",sheet_name="日期统计")#从excel文件读入数据
#代码开始
matplotlib.rcParams['font.family']='SimHei'#在图表中显示中文,其中'SimHei'表示黑体字。
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
plt.figure(figsize=(10,14))#建立一个10英寸长14英寸宽的窗口
plt.title("日期销售")#设置标题
plt.xlabel("日期")#设置当前x轴的标签
plt.ylabel("金额")#设置当前y轴的标签
plt.ylim(0,1800)#设置当前y轴取值范围
plt.gca().xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%Y-%m-%d'))#设置x轴日期格式
plt.xlim(datetime.date(2000,5,20),datetime.date(2000,7,18))#设置当前x轴取值范围
plt.xticks(pd.date_range('2000-5-20','2000-7-18'),rotation=90)#设置x轴日期开始日期和结束日期
plt.plot(df["日期"].dt.date,df["合计金额"])
#代码结束
plt.savefig("image4/rqzxt.jpg")

第5关:四种类别的销售数量合计

任务描述

本关任务:根据excel文件“类别销售”工作簿(tbsc/step2/类别销售.xlsx)的烟、零食、饮料、酒工作表的数据,找出销售数量合计最高的三种商品,建立条状图

相关知识

为了完成本关任务,你需要掌握:1.如何建立条状图,2.如何绘制子图。

建立条形图

bar(x, height, alpha=1, width, color=, edgecolor=, label=, linewidth)

参数:

x:x轴的位置序列,一般采用arange函数产生一个序列;

height:y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据;

alpha:透明度

width:为柱形图的宽度

color:柱形图填充的颜色;

edgecolor:图形边缘颜色

label:解释每个图像代表的含义

linewidth :边缘线的宽度

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
y=[84.12,81.83,79.89,78.19,76.83,75.09,74.58,73.71]
#设置y轴的值
sj=np.linspace(1,8,8)
#设置x轴的位置
plt.bar(x=sj, height=y,width=0.5, color='b')
#根据x和y绘制条形,条形宽度0.5,颜色蓝色
plt.show()

绘制子图

subplot(numRows, numCols, plotNum)

参数: 图表的整个绘图区域被分成 numRows 行和 numCols 列

然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1

plotNum 参数指定创建的 Axes 对象所在的区域

plt.subplot(2,2,1)

图表的整个绘图区域被分成2行和2列

选择左上区域作为当前的绘图区域

编程要求

根据提示,在右侧编辑器补充代码,按要求输出图形。

图形的宽度为10,高度为14

四个子图分别为烟,饮料,零食,酒四个类别的三种销量最高的商品的销售量

柱形的横轴坐标分别为0,0.5,1,每个柱形的宽度为0.2,图例为商品名称。

在每个柱形上标识使出数量的文字(高度比柱形高1)

每个子图的标题为商品类别,x轴分别标识1,2,3

每个子图需要显示图例

运行代码

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
#代码开始
matplotlib.rcParams['font.family']='SimHei'#在图表中显示中文,其中'SimHei'表示黑体字
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
plt.figure(figsize=(10,14))#建立一个10英寸长14英寸宽的窗口
lb=["烟","饮料","零食","酒"]
j=1
for x in lb:
    df=pd.read_excel("tbsc/step2/类别销售.xlsx",sheet_name=x)#从excel文件读入数据
    ans=df.groupby("商品名称")["数量"].sum()
    ans.sort_values(ascending=False,inplace=True)
    ans.index=ans.index.str.replace("\t","")
    sp=ans[:3]
    plt.subplot(2,2,j)#图表的整个绘图区域被分成2行和2列
    for i in range(0,3):
        plt.bar(x=i*0.5, height=ans[i],width=0.2,label=ans.index[i])#建立条状图
        plt.text(i*0.5,ans[i]+1,ans[i])
    j=j+1
    plt.xticks([0,0.5,1],[1,2,3])#设置x轴开始和结束范围
    plt.title(x)#设置标题
    plt.legend()
#代码结束
plt.savefig("image5/lbzxt.jpg")

第6关:销售各类别数据绘制饼图

任务描述

本关任务:根据统计数据工作簿的类别统计数据,建立饼图。

将合计金额小于合计金额的平均值1/5的数据,统计到其他类别。

相关知识

为了完成本关任务,你需要掌握:如何建立饼图

绘制饼图

pie(x, explode=None, labels=None,colors=('b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'),    autopct=None, shadow=False,labeldistance=1.1, radius=None)

参数:x (每一块)的比例,如果sum(x) > 1会使用sum(x)归一化

labels (每一块)饼图外侧显示的说明文字

explode (每一块)离开中心距离

startangle起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起

shadow 是否阴影

labeldistance label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧

autopct 控制饼图内百分比设置,可以使用format字符串指小数点前后位数

radius 控制饼图半径

编程要求

根据提示,在右侧编辑器补充代码,生成如图所示饼图

饼图宽10高10

图表标签为合计金额大于等于合计金额的平均值1/5的类别,加上其他类别

饼图内按保留两位小数的形式显示百分比

图表标题为各类别销售分布

运行代码

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import pandas as pd
df=pd.read_excel("tbsc/step3/统计数据.xlsx",sheet_name="类别统计")
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
#代码开始
plt.figure(figsize=(10,10))#建立一个10英寸长10英寸宽的窗口
ds = df["合计金额"].mean()/5#图表标签为合计金额大于等于合计金额的平均值1/5的类别
df1 = df.loc[df["合计金额"]>=ds] 
qthj=df.loc[df["合计金额"]<ds]["合计金额"].sum()
df1=df1.append({"类别":"其他","合计金额":qthj},ignore_index=True)
plt.pie(df1["合计金额"],labels=df1["类别"],autopct="%0.2f%%")#绘制饼图      饼图内按保留两位小数的形式显示百分比
plt.title('各类别销售分布')
#代码结束
plt.savefig("image6/lbbt.jpg")


相关文章
|
3天前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
15 1
|
4天前
|
存储 数据可视化 数据挖掘
揭秘!Matplotlib与Seaborn联手,如何让Python数据分析结果一目了然,惊艳全场?
在数据驱动时代,高效直观地展示分析结果至关重要。Python中的Matplotlib与Seaborn是两大可视化工具,结合使用可生成美观且具洞察力的图表。本文通过分析某电商平台的商品销量数据集,展示了如何利用这两个库揭示商品类别与月份间的销售关系及价格对销量的影响。首先使用Matplotlib绘制月份销量分布直方图,再借助Seaborn的箱线图进一步探索不同类别和价格区间下的销量稳定性。
27 10
|
8天前
|
数据可视化 Python
Python编程中的数据可视化技术
【9月更文挑战第19天】在数据驱动的时代,将复杂的数据集转化为直观易懂的视觉表达至关重要。本文将深入探索Python中的数据可视化库,如Matplotlib和Seaborn,并指导读者如何运用这些工具来揭示数据背后的模式和趋势。文章不仅会介绍基础图表的绘制方法,还将讨论高级技巧以提升图表的信息丰富度和吸引力。
|
4天前
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
在这个数据可视化的新纪元,让我们充分发挥 Python 的优势,用精彩的图表讲述数据背后的故事,为决策提供有力的支持,为交流带来清晰的视角。
20 4
|
4天前
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
在数据科学与机器学习领域,数据可视化是理解数据和优化模型的关键。Python凭借其强大的可视化库Matplotlib和Seaborn成为首选语言。本文通过分析一份包含房屋面积、卧室数量等特征及售价的数据集,展示了如何使用Matplotlib绘制散点图,揭示房屋面积与售价的正相关关系;并利用Seaborn的pairplot探索多变量间的关系。在机器学习建模阶段,通过随机森林模型展示特征重要性的可视化,帮助优化模型。这两个库在数据分析与建模中展现出广泛的应用价值。
14 2
|
6天前
|
数据可视化 数据挖掘 Python
利用Python进行数据可视化的探索之旅
【9月更文挑战第21天】在数字化时代,数据是新的石油。然而,原始数据本身并不能直接提供洞察力或决策支持。通过将数据转化为视觉格式,我们不仅能够更直观地理解数据背后的故事,还能发现之前未曾注意到的模式和关联。本文将引导你使用Python及其强大的可视化库(如Matplotlib和Seaborn)来揭示数据的秘密。无论你是数据分析新手还是希望提升报告质量的资深分析师,跟随我们的步骤,你将能创建出既美观又富有信息量的可视化作品。
15 4
|
7天前
|
数据可视化 数据挖掘 Python
逆袭之路!Python数据分析新手如何快速掌握Matplotlib、Seaborn,让数据说话更响亮?
在数据驱动时代,掌握数据分析技能至关重要。对于Python新手而言,Matplotlib和Seaborn是数据可视化的两大利器。Matplotlib是最基本的可视化库,适合绘制基础图表;Seaborn则提供高层次接口,专注于统计图形和美观样式。建议先学Matplotlib再过渡到Seaborn。快速上手Matplotlib需多实践,示例代码展示了绘制折线图的方法。Seaborn特色功能包括分布图、关系图及分类数据可视化,并提供多种主题和颜色方案。两者结合可实现复杂数据可视化,先用Seaborn绘制统计图,再用Matplotlib进行细节调整。熟练掌握这两者,将显著提升你的数据分析能力。
31 4
|
2天前
|
机器学习/深度学习 开发工具 git
matplotlib各种案例总结(python经典编程案例)
该文章汇总了使用matplotlib绘制不同类型图表的方法和案例,包括条形图、折线图等,并展示了如何调整颜色和线条样式等属性。
11 0
|
16天前
|
数据可视化 Python
Python中的数据可视化:使用Matplotlib绘制图表
【9月更文挑战第11天】在这篇文章中,我们将探索如何使用Python的Matplotlib库来创建各种数据可视化。我们将从基本的折线图开始,然后逐步介绍如何添加更多的功能和样式,以使您的图表更具吸引力和信息量。无论您是数据科学家、分析师还是任何需要将数据转化为视觉形式的专业人士,这篇文章都将为您提供一个坚实的起点。让我们一起潜入数据的海洋,用视觉的力量揭示其背后的故事。
40 16
|
8天前
|
数据可视化 数据挖掘 API
使用Python进行数据可视化:探索Matplotlib和Seaborn库
【9月更文挑战第19天】在数据科学领域,将复杂的数据集转换成直观、易懂的图形是一项基本而关键的技能。本文旨在通过Python编程语言介绍两个强大的数据可视化库——Matplotlib和Seaborn,以及它们如何帮助数据分析师和研究人员揭示数据背后的故事。我们将从基础概念讲起,逐步深入到高级技巧,确保无论读者的背景如何,都能获得必要的知识和启发,以在自己的项目中实现有效的数据可视化。