学Python不会Matplotlib是什么?一文教你入门Matplotlib

前言:

作者:神的孩子在跳舞
本人是刚开始学机器学习的小白,以下都是我的学习笔记,有一些是我自己理解的话,所以可能有不对的地方或者有些话只适合我自己理解(仅供参考),不对的希望大家能指出来,另外我创建了一个机器学习交流群 903419026,各位跟我一样的小白可以进来多交流交流,互相促进,大佬看见了可以进来指导一下(狗头)。我的微信:chenyunzhiLBP

Matplotlib入门

*
一. Matplotlib作用
二. Matplotlib三层结构
三. Matplotlib之HelloWorld

+ 3.1 辅助显示层
四中文编码问题

一. Matplotlib作用

可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法, 是专门用于开发2D(3D)图表的包

  1. 能将数据进行可视化,更直观的呈现
  2. 使数据更加客观、更具说服力

二. Matplotlib三层结构

  1. 容器层:Canvas(画板)、Figure(画布)、Axes(坐标)组成
  2. 辅助显示层:主要作用添加坐标轴描述,标题等内容
  3. 图像层:设定要画一个什么样的图像:plot,scatter…

三. Matplotlib之HelloWorld

绘制图像流程【掌握】

  1. 创建画布 – plt.figure(figsize=(20,8),dpi=) (1)figsize:指定图的长宽
    (2)dpi:图像的清晰度
  2. 绘制图像 – plt.plot(x, y)
  3. 显示图像 – plt.show()

所需要的包

import matplotlib.pyplot as plt

代码展示,画出折线图


plt.figure(figsize=(10,10),dpi=100)

plt.plot([1,2,3,4,5],[12,12,3,4,5])

plt.savefig("test.png")

plt.show()

学Python不会Matplotlib是什么?一文教你入门Matplotlib
学Python不会Matplotlib是什么?一文教你入门Matplotlib

3.1 辅助显示层

上面已经用到了 容器层图像层,那么我们接下来添加 辅助显示层

  1. 添加自定义x,y刻度
plt.xticks(x, 刻度值)

x:要显示的刻度值

plt.yticks(y, 刻度值)

y:要显示的刻度值

可以通过y[::5]切片的方式,每隔5个格刻度值

  1. 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)
  1. 添加x轴、y轴描述信息及标题
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
  1. 显示图例
plt.legend(loc="best")
  1. 多个坐标系显示

plt.subplots(nrows=, ncols=)
  1. 图像保存
plt.savefig("路径")

代码展示

案例:显示温度变化状况
需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度

import random
import matplotlib
from matplotlib.font_manager import FontProperties
myfont=FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=14)
sns.set(font=myfont.get_name())

x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
y_beijing = [random.uniform(-5, 5) for i in x]

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x, y_shanghai, label="上海", color="r", linestyle="--")
plt.plot(x, y_beijing, label="北京")

plt.plot(x,y_shanghai)

x_ticks_label = ["11点{}分".format(i) for i in x]

y_ticks = range(40)

plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

plt.grid(True,linestyle='--',alpha=0.5)

plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点0分到12点之间的温度变化图示")

plt.legend(loc="best")

plt.show()

学Python不会Matplotlib是什么?一文教你入门Matplotlib

四中文编码问题

可能会出现中文编码问题,如以下情况

在顶上添加以下代码就可以了


import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

学Python不会Matplotlib是什么?一文教你入门Matplotlib

本人博客:https://blog.csdn.net/weixin_46654114
本人b站求关注:https://space.bilibili.com/391105864
转载说明:跟我说明,务必注明来源,附带本人博客连接。

请给我点个赞鼓励我吧

学Python不会Matplotlib是什么?一文教你入门Matplotlib

Original: https://blog.csdn.net/weixin_46654114/article/details/116092015
Author: 神的孩子都在歌唱
Title: 学Python不会Matplotlib是什么?一文教你入门Matplotlib



相关阅读

Title: dataframe 更改某列某值_第17篇:Pandas-遍历DataFrame对象

DataFrame的遍历方式主要有三种

DataFrame.iterrows()按行顺序优先,接着依次按列迭代DataFrame.iteritems()按列顺序优先,接着依次按行迭代DataFrame.itertuples()按行顺序优先,接着依次按列迭代

下图的DataFrame沿用上一篇的示例。

剧名,集數,主演,監製
"風雨晴Come Rain, Come Shine",20,石修、黃日華、苗僑偉、湯鎮業、陳秀珠,
佛山贊先生Kung Fu Master of Fat Shan,20,呂良偉、黃日華、歐陽佩珊,
飛鷹The Hawk,20,鄭少秋、趙雅芝,李鼎倫
英雄出少年The Young Heroes of Shaolin,20,石修、黃日華、苗橋偉、董瑋,邱家雄
富貴榮華Brothers Four,20,鄭少秋、陳秀珠,
突破Break Through,20,"陳百強, 翁靜晶, 毛舜筠, 莊靜而",

读者实践本示例前,请使用Pandas.read_csv()函数加载该csv文件。

df=pd.read_csv('./result.csv')

如下图所示

按行遍历

通过for迭代df.iterrows接口,idx是输出DataFrame内部的索引值,data输出每行单元格的值

for idx,data in df.iterrows():
    print("[{}]: {}".format(idx,data))

输出如下

如果我们仅输出每一行特定的列,例如索引为2的列,那么我们使用如下代码

for idx,data in df.iterrows():
    print("[{}]: {}".format(idx,data[2]))

其工作的逻辑如下所示

输出如下图

来一个有点实质意义的示例吧,例如我要将当前DataFrame中每行的第2列的所有值满足20,都改成35,但这种编程方式是不鼓励的,因为性能非常糟糕

for idx,row in df.iterrows():
    if row[1]=='20':
        row[1]='35'

如下所示,需要注意的是,当前DataFrame除了索引列外,其他列的单元格,要么是str类型,要么是NaN类型

按行优先的遍历方式,还有itertuples( )函数,它将返回一个生成器,该生成器以元组生成行值。 让我们尝试一下:

for data in df.itertuples():
    print(data)

输出如下图

itertuples()方法有两个参数:index和name。我们可以通过将index参数设置为False来选择不显示索引列:

for data in df.itertuples(index=False):
    print(data)

元组不再显示Index,输出如图

就像您已经注意到的那样,Pandas.itertuples生成器产生具有默认名称Pandas的命名元祖。 您可以选择自己喜欢的任何名称,但始终最好选择与数据相关的名称,如下用例所示

for data in df.itertuples(index=False,name='Drama'):
    print(data)

输出如下图

对于按itertuples()方式的行优先遍历,如果我们只想返回某列的数据,可以在for迭代器返回的tuple添加列索引,

for data in df.itertuples(index=False,name='Drama'):
    print(data[2])

输出如下图

按列遍历

现在,要遍历此DataFrame,我们将使用items( )或iteritems( )函数:

df.items()

这将返回一个生成器:

我们可以使用它来生成col_name和数据对。 这些对将包含列名和该列的每一行数据。 让我们遍历列名及其数据:

for colName,data in df.items():
    print("colName:[{}]ndata:{}".format(colName,data))

其items的逻辑是,先列后行的逻辑依次遍历每个单元格中数据

输出是:

如果我们按列优先,仅遍历某一行依次遍历所有列

for colName,data in df.iteritems():
    print("colName:[{}]ndata:{}".format(colName,data[2]))

如下图所示

性能问题

Panda的官方文档警告说,迭代DataFrame是一个降低性能的过程。 如果要遍历DataFrame修改数据,不建议在迭代行时修改数据,因为Pandas有时会返回行中的数据副本而不是其引用,这意味着并非所有数据都会被更改。我们对上面的三种迭代方式做一些简单的性能基准

如下图,按行遍历的iterrows的性能是最差的,而按行遍历返回tuple的方式性能是最好的,其次是按列遍历的i考虑的teritems是可以考虑的

对于小型数据集,可以使用to_string()方法显示所有数据。 对于具有许多列和行的较大数据集,可以使用head(n)或tail(n)方法打印出DataFrame的前n行(n的默认值为5)。

Original: https://blog.csdn.net/weixin_35808305/article/details/112449882
Author: 袁大岛
Title: dataframe 更改某列某值_第17篇:Pandas-遍历DataFrame对象

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/329274/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux系统如何查看服务器带宽及网络使用情况

    文章目录 前言 linux查看服务器带宽具体方法 * 一、使用speedtest-cli命令查看下载和上传最大流量值 二、查看网卡、网络的详情 – 1.查看服务器网络端…

    Python 2023年1月23日
    031
  • 设计模式学习(十四):模板方法

    设计模式学习(十四):模板方法 作者:Grey 原文地址: 博客园:设计模式学习(十四):模板方法 CSDN:设计模式学习(十四):模板方法 模板方法 模板方法是一种 行为型模式。…

    Python 2023年1月29日
    023
  • 2021-09-17——积少成多之python函数

    每天一小节python知识 积少成多它不香吗??? 第十五节 函数的定义 函数的作用:函数就是将一段具有独立功能的代码块集合到一个整体并命名,在需要的位置调用这个名称即可完成对应的…

    Python 2023年1月23日
    032
  • Python matplotlib 绘制散点图 还不收藏起来

    复习回顾 我们在往前几期中对matplotlib模块学习,对常用的反映数据变化的折线图,对比数据类型差异的柱状图和反应数据频率分布情况的直方图。 往前内容快速查看 超详细的Pyth…

    Python 2023年1月15日
    041
  • 性能测试——工具的使用,性能测试流程

    一、为什么要做性能测试: 因为 功能和接口测试只能验证软件的功能是否正常运行,功能和接口测试不能验证软件的性能在多用户,多并发,长时间的操作下,能否正常运行。 二、性能测试的分类:…

    Python 2022年11月3日
    0110
  • 【LINUX修行之路】工具篇——Vim的使用及配置

    🍿本节主题:vim的使用🎈推荐阅读:回溯算法 、C++入门(上篇)💕我的主页:蓝色学者的主页 文章目录 一、前言 二、文本编辑器和IDE 三、选择vim的理由 四、vim操作模式 …

    Python 2023年2月5日
    017
  • SA实战 · 《SpringCloud Alibaba实战》第02章-专栏设计

    作者:冰河星球:http://m6z.cn/6aeFbs博客:https://binghe001.github.io文章汇总:https://binghe001.github.io…

    Python 2023年1月23日
    029
  • vscode解决matplotlib不显示中文问题

    下载微软雅黑字体 直接百度,下载的脚本之家的,亲测可用 找到字体文件夹 import matplotlib print(matplotlib.matplotlib_fname())…

    Python 2023年1月14日
    057
  • 更改DataFrame列顺序

    使用pandas进行数据分析的时候,有时会由于各种需求添加了一些列。可是列的顺序并不能符合自己的期望。这个时候就需要对于列的顺序进行调整。 显示的数据内容为: 其实想调整为:(将最…

    Python 2022年9月5日
    0139
  • Hive数据仓库工具基本架构和入门部署详解

    @ 概述 定义 本质 特点 Hive与Hadoop关系 Hive与关系型数据库区别 优缺点 其他说明 架构 组成部分 数据模型(Hive数据组织形式) Metastore(元数据)…

    Python 2023年1月31日
    022
  • bugku CTF练习:Flask_FileUpload思路

    https://ctf.bugku.com/challenges/detail/id/204.html 打开页面是这个样子。右键查看源代码。 它提示我说会用Python去执行。太棒…

    Python 2023年1月2日
    056
  • matplotlib图像绘制基础

    matplotlib中有很多个作图元素,如下图: 上图中涵盖了最基本的作图元素,其实还有更多的元素需要注意的,下面我们针对每个元素进行详细说明。 在绘制图像时,会对图像有各种需求,…

    Python 2023年1月14日
    026
  • Numpy Python

    immutable: int, float, tuple, string mutable: list, dict, class, set, numpy.ndarray >&g…

    Python 2023年1月11日
    049
  • 03 最小CMake项目

    03 最小CMake项目 所有CMake项目都从一个CMakeLists.txt文件开始,此文件应该放在源代码树的最顶层目录下。可以将CMakeLists.txt想象成CMake项…

    Python 2023年1月31日
    018
  • 【K哥爬虫普法】老铁需要车牌靓号吗?判刑的那种

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了”K哥爬虫普法”专栏,本栏目通过对真实案例的分析,旨在提高广…

    Python 2023年2月3日
    034
  • 就离谱!使用机器学习预测2022世界杯:小组赛挺准,但冠亚季军都错了 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40📘 机器学习实战系列:https://www.s…

    Python 2023年2月1日
    021
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载