数据建模与分析|Matplotlib的综合应用

本文主要介绍数据可视化过程,首先使用NumPy和Pandas进行数据读取、数据分组、数据重编码、分类汇总等数据加工处理,然后利用matplotlib汇总多种图表。

1. Matplotlib简介

matplotlib是一个python 2D绘图库,利用它可以画出许多高质量的图像。只需几行代码即可生成直方图,条形图,饼图,散点图等。
Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。
matplotlib是可视化的表达,那么在图形的绘制中肯定会涉及一些数据处理。pandas和numpy则是python中最好用的两个数据分析库,使用它们,能够解决超过90%的数据分析问题。
安装:

  • Anaconda中免安装
  • python -m pip install matplotlib

使用Matplotlib一般导入以下包:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl

2. 数据分组处理

  • 使用.mean()方法计算平均值
  • 使用apply()获取年份的数据序列,Pandas的apply()函数的自由度较高,函数可以直接对 Series 或者 DataFrame 中元素进行逐元素遍历操作,方便且高效,具有类似于 Numpy 的特性。apply() 最后的是经过函数处理,数据以Series 或 DataFrame 格式返回。apply() 使用时,通常放入一个 lambda 函数表达式、或一个函数作为操作运算,官方上给出的 apply() 用法:

DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds
func 代表的是传入的函数或 lambda 表达式;
axis 参数可提供的有两个,该参数默认为0/列
0 或者 index ,表示函数处理的是每一列;
1 或 columns ,表示处理的是每一行;
raw ;bool 类型,默认为 False;
False ,表示把每一行或列作为 Series 传入函数中;
True,表示接受的是 ndarray 数据类型;

  • 使用.groupby()分组计算,这里data[‘AQI’].groupby(data[‘年’]).mean().values分组计算各年AQI的平均值
  • 使用.max()计算最大值
import numpy as np
import pandas as pd
data=pd.read_excel('北京市空气质量数据.xlsx')
data=data.replace(0,np.NaN)
AQI_mean=data['AQI'].mean()
data['年']=data['日期'].apply(lambda x:x.year)
AQI_mean_year=data['AQI'].groupby(data['年']).mean().values
AQI_max=data['AQI'].max()

3. 绘制时间序列折线图

引入Matplotlib的Pyplot子模块,指定别名为plt,用于绘图输出。
%matplotlib inline 是一个魔法函数(Magic Functions)。%matplotlib inline 可以在Ipython编译器里直接使用,功能是可以内嵌绘图,并且可以省略掉plt.show()这一步。
Matplotlib库涉及内容较多,这里不做详细介绍了,后期准备单独做介绍。以下简要说明步骤:

    1. 利用函数plt.figure说明图形的一般特征,如这里宽为10高5。
    1. 利用函数plt.plot绘制序列折线图(还可以绘制其他图)。同时,指定折线颜色、线形、线宽等。
    1. 利用函数plt.axhline在参数y指定的位置上画一条平行于横坐标的直线,并给定直线图例文字。plt.axvline可参数x指定的位置上画一条平行于纵坐标的直线。
    1. 通过for循环绘制多条平行于横坐标的直线,表征各年AQI平均值。
    1. 利用title()、xlabel()、ylabel()指定图的标题,横纵坐标的坐标标签。
    1. 利用xlim()、ylim()指定横纵坐标的取值范围。
    1. 利用xticks()、yticks()在指定坐标刻度位置上给出刻度标签。
    1. 利用legend()在指定位置(这里best表示最优位置)显示图例。
    1. 利用text()在指定的行列位置上显示指定文字
    1. 利用show()表示本次绘图结束。
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']  #解决中文显示乱码问题
plt.rcParams['axes.unicode_minus']=False
plt.figure(figsize=(10,5))
plt.plot(data['AQI'],color='black',linestyle='-',linewidth=0.5)
plt.axhline(y=AQI_mean,color='red', linestyle='-',linewidth=1.0,label='AQI总平均值')
year=['2014年','2015年','2016年','2017年','2018年','2019年']
col=['red','blue','green','yellow','purple','brown']
for i in range(6):
    plt.axhline(y=AQI_mean_year[i],color=col[i], linestyle='--',linewidth=0.8,label=year[i])
plt.title('2014年至2019年AQI时间序列折线图')
plt.xlabel('年份')
plt.ylabel('AQI')
plt.xlim(xmax=len(data), xmin=1)
plt.ylim(ymax=AQI_max,ymin=1)
plt.yticks([AQI_mean],['AQI平均值'])
plt.xticks([1,365,365*2,365*3,365*4,365*5],['2014','2015','2016','2017','2018','2019'])
plt.legend(loc='best')
plt.text(x=list(data['AQI']).index(AQI_max),y=data['AQI'].max()-20,s='空气质量最差日',color='red')
plt.show()

在这里插入图片描述

4. 绘制多张子图

示例说明:

  • 导入warnings模块,并指定忽略代码运行过程中的警告信息。
  • subplot(2,2,1)表示将绘图区域分成2行2列4个单元,且下一副图将在第1个单元显示。
  • 利用plot()绘制各年AQI的折线图。
  • subplot(2,2,2)表示将绘图区域分成2行2列4个单元,且下一副图将在第2个单元显示。
  • 利用hist()绘制AQI的直方图,图中包含20个柱形条,即将数据分成20组。
  • 利用scatter()绘制PM2.5和AQI的散点图。并指定点的大小(s),颜色(c)和形状(marker)。
  • 利用pie()绘制饼图。
import warnings
warnings.filterwarnings(action = 'ignore')
fig=plt.figure(figsize=(10,5))
fig.subplots_adjust(hspace=0.5)
fig.subplots_adjust(wspace=0.5)
plt.subplot(2,2,1)
plt.plot(AQI_mean_year,color='black',linestyle='-',linewidth=0.5)
plt.title('各年AQI均值折线图')
plt.xticks([0,1,2,3,4,5],['2014','2015','2016','2017','2018','2019'])
plt.subplot(2,2,2)
plt.hist(data['AQI'],bins=20)
plt.title('AQI直方图')
plt.subplot(2,2,3)
plt.scatter(data['PM2.5'],data['AQI'],s=0.5,c='green',marker='.')
plt.title('PM2.5与AQI散点图')
plt.xlabel('PM2.5')
plt.ylabel('AQI')
plt.subplot(2,2,4)
tmp=pd.value_counts(data['质量等级'],sort=False)  #等同:tmp=data['质量等级'].value_counts()
share=tmp/sum(tmp)
labels=tmp.index
explode = [0, 0.2, 0, 0, 0,0.2,0]
plt.pie(share, explode = explode,labels = labels, autopct = '%3.1f%%',startangle = 180, shadow = True)
plt.title('空气质量整体情况的饼图')
Text(0.5, 1.0, '空气质量整体情况的饼图')

在这里插入图片描述

  • 26
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python数据分析应用期末考试主要考察学生对Python的数据处理和分析能力的掌握程度。考试内容包括以下方面: 1. 数据处理和清洗:考察学生对数据的读取、清洗和准备的能力。学生需要掌握使用Python中的(如Pandas)对数据进行排序、过滤、去重等操作,并能处理数据中的缺失值和异常值。 2. 数据分析和统计:考察学生对统计学概念的理解和应用能力。学生需要掌握Python中常用的统计分析方法,如描述性统计、假设检验、相关性分析等,并能使用相应的(如NumPy、SciPy)进行相应的计算和分析。 3. 数据可视化:考察学生对数据可视化工具的掌握。学生需要能使用Python中的(如Matplotlib、Seaborn)对数据进行可视化,展示数据的分布、趋势和相关性,并能通过图表清晰地传达分析结果。 4. 机器学习和预测建模:考察学生对机器学习算法的理解和应用能力。学生需要了解常见的机器学习算法,如线性回归、决策树、随机森林等,并能使用Python中的(如Scikit-learn)构建和评估预测模型。 此外,考试还可能包括理论题和综合应用题,测试学生对Python数据分析相关知识的综合运用能力。 在备考期末考试时,建议学生多进行练习和实践,通过完成真实数据分析项目来提升自己的实际操作能力。同时,也可参考相关教材和在线教程,复习和巩固相关知识点。最后,保持良好的时间管理,合理安排复习计划,确保能够全面复习和准备考试所需的知识和技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皖山文武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值