数据分析 — Matplotlib 、Pandas、Seaborn 绘图

news/发布时间2024/5/14 22:57:56

目录

  • 一、Matplotlib
    • 1、折线图
    • 2、柱状图
    • 3、水平条形图
    • 4、直方图
    • 5、散点图
    • 6、饼图
  • 二、pandas
    • 1、折线图
    • 2、柱状图
  • 三、seaborn
    • 1、散点图
    • 2、箱线图
    • 3、直方核密度图
    • 4、成对图

一、Matplotlib

Matplotlib 是一个用于绘制数据可视化图形的 Python 库。它提供了丰富的绘图工具,可以用于创建各种类型的图表。

安装和导入:

pip install matplotlib

import matplotlib.pyplot as plt # 导入 Matplotlib 库

1、折线图

import numpy as np  # 导入 NumPy 库并使用别名 np
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库
# 设置画布大小
plt.figure(figsize=(10, 5))
# 设置字体为中文黑体
plt.rcParams['font.family'] = 'SimHei'
# 设置字体大小为 15
plt.rcParams['font.size'] = 15
# 定义 x 和 y 数据
x = [1, 2, 3, 4, 5]  # 星期
y = [25, 27, 22, 30, 32]  # 气温# 绘制折线图
plt.plot(x, y, marker='D',  # 设置点的形状markerfacecolor='gold',  # 设置折点填充颜色markersize=10,  # 设置折点大小markeredgecolor='red',  # 设置边缘颜色为红色color='green',  # 设置折线颜色为绿色linewidth=3,  # 设置折线宽度为3linestyle=':',  # 设置折线样式为虚线(折线样式:'-', '--', '-.', ':', '')label='温度'  # 设置标签为'温度')# 设置 x 轴刻度标签为中文星期名
tick_labels = ['星期一', '星期二', '星期三', '星期四', '星期五']
plt.xticks(x, tick_labels)# 设置 y 轴标签
plt.ylabel('气温(℃)')
# 设置 x 轴标签
plt.xlabel('星期')
# 设置图形标题
plt.title("一周的温度变化情况")
# 显示图例
plt.legend()
# 显示图形
plt.show()

在这里插入图片描述

2、柱状图

import numpy as np  # 导入 NumPy 库并使用别名 np
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库
import random  # 导入 random 库,用于生成随机数
# 设置画布大小
plt.figure(figsize=(10, 6))
# 设置字体为中文黑体
plt.rcParams['font.family'] = 'SimHei'
# 定义 x 轴的城市名称
x = ['北京市', '上海市', '天津市', '重庆市']
# 生成包含4个随机整数的列表,表示每个城市的数据
y = [random.randint(10000, 14000) for i in range(4)]
# 绘制柱状图,设置柱宽为0.6
plt.bar(x, y, width=0.6)
# 设置 y 轴的取值范围为 [8000, 15000]
plt.ylim([8000, 15000])# 在每个柱状图上添加数据标签
for i, j in enumerate(y):# 打印城市索引和对应的数据值print(i, j)# 在每个柱状图上方添加文本标签,位置为 (i, j + 100),水平居中对齐plt.text(i, j + 100, j, ha='center')# 显示图形
plt.show()

在这里插入图片描述

3、水平条形图

import numpy as np  # 导入 NumPy 库并使用别名 np
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库# 设置画布大小
plt.figure(figsize=(10, 6))
# 设置字体为中文黑体
plt.rcParams['font.family'] = 'SimHei'
# 定义价格和标签数据
price = [38.8, 40.2, 48.4, 39.9, 32.34]
label = ['亚马逊', '当当网', '中国图书网', '京东', '天猫']
# 绘制水平条形图
plt.barh(label, price)# 在每个条形图右侧添加数据标签
for i, j in enumerate(price):# 在每个条形图右侧添加文本标签,位置为 (j + 0.5, i),垂直居中对齐plt.text(j + 0.5, i, j, va='center')# 显示图形
plt.show()

在这里插入图片描述

4、直方图

import numpy as np  # 导入 NumPy 库并使用别名 np
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库# 设置画布大小
plt.figure(figsize=(10, 6))
# 设置字体为中文黑体
plt.rcParams['font.family'] = 'SimHei'
# 解决坐标轴负号显示问题
plt.rcParams['axes.unicode_minus'] = False
# 生成包含1000个随机数的一维数组
data = np.random.randn(1000)
# 绘制直方图,分成20个箱子,颜色为蓝色,透明度为0.5,添加标签为'直方图'
plt.hist(data, bins=20, color='blue', alpha=0.5, label='直方图')
# 添加图例
plt.legend()
# 显示图形
plt.show()

在这里插入图片描述

5、散点图

import numpy as np  # 导入 NumPy 库并使用别名 np
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库# 设置画布大小
plt.figure(figsize=(8,5))
# 设置字体为中文黑体
plt.rcParams['font.family'] = 'SimHei'
# 定义身高和体重的数据
height = [120, 161, 170, 182, 175, 173, 165, 155, 150, 110]
weight = [38, 45, 58, 80, 90, 59, 55, 45, 40, 30]
# 根据体重生成散点的大小
sizes = [i * 20 for i in weight]
# 生成随机颜色
colors = np.random.rand(len(weight))
# 绘制散点图,设置点的大小、颜色
plt.scatter(height, weight, s=sizes, c=colors)
# 显示图形
plt.show()

在这里插入图片描述

6、饼图

import numpy as np  # 导入 NumPy 库并使用别名 np
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库# 设置画布大小
plt.figure(figsize=(8, 8))
# 设置字体为中文黑体
plt.rcParams['font.family'] = 'SimHei'
# 构造数据
x = [0.2515, 0.3724, 0.3336, 0.0368, 0.0057]
# 定义标签
labels = ['中专', '大专', '本科', '硕士', '其他']# 绘制饼图
plt.pie(x,  # x 表示设置饼每块的值labels=labels,  # 设置标签autopct="%1.1f%%",  # 设置成百分比的形式pctdistance=0.8  # 设置百分比标签到圆心距离的比例)
# 显示图形
plt.show()

在这里插入图片描述

二、pandas

1、折线图

import numpy as np  # 导入 NumPy 库并使用别名 np
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库# 生成包含10个随机数的一维数组,并计算累积和,将其转换为 Pandas 的 Series
s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10))
# 绘制折线图,设置图形大小为 (7, 5) inches,颜色映射为 'viridis'
s.plot(figsize=(7, 5), colormap='viridis')
# 显示图形
plt.show()

在这里插入图片描述

import numpy as np  # 导入 NumPy 库并使用别名 np
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库# 生成一个包含10行4列随机数的二维数组,并对每列进行累积和
# 将其转换为 Pandas 的 DataFrame,指定列名和索引
df = pd.DataFrame(np.random.randn(10, 4).cumsum(0),columns=['one', 'two', 'three', 'four'],index=np.arange(0, 100, 10))
# 绘制 DataFrame 中每列的折线图,设置图形大小为 (10, 6) inches
df.plot(figsize=(10, 6))
# 显示图形
plt.show()

在这里插入图片描述

2、柱状图

import numpy as np  # 导入 NumPy 库并使用别名 np
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库# 创建一个包含两个子图的图形,fig是图形对象,axes是包含两个子图的数组
fig, axes = plt.subplots(2, 1)
# 生成包含10个随机数的一维数组,并转换为 Pandas 的 Series,指定索引
data = pd.Series(np.random.rand(10), index=list('abcdefjhij'))
# 在第一个子图上绘制垂直柱状图,设置图形大小、颜色、透明度
data.plot.bar(figsize=(10, 10), ax=axes[0], color='r', alpha=0.5)
# 在第二个子图上绘制水平柱状图,设置图形大小、颜色、透明度
data.plot.barh(figsize=(10, 10), ax=axes[1], color='g', alpha=0.5)
# 显示图形
plt.show()

在这里插入图片描述

图表适用场景总结:
1、折线图:表示数据的趋势情况,如几年每个月份的销量走势、股票走势。
2、散点图:查看数据的分布情况,是否有离群点、异常值(极小值、极大值 )、分布是否集中。
3、饼图:查看数据的占比情况,如整个市场的份额。
4、柱状图:多组数据数据对比。
5、直方图:查看数据的分布情况,集中程度、主要分布在哪个区间。

三、seaborn

Seaborn 是建立在 Matplotlib 基础上的一个数据可视化库。它提供了一些方便的函数,用于创建统计图形,特别适用于数据集的可视化和分析。

安装和导⼊:

pip install seaborn==0.11

import seaborn as sns # 导入 Seaborn 库并使用别名 sns

读取数据:

import pandas as pd  # 导入 Pandas 库并使用别名 pd
iris = pd.read_csv(r'F:\data\iris.csv')
print(iris)

在这里插入图片描述

1、散点图

import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库
import seaborn as sns  # 导入 Seaborn 库并使用别名 sns# 从 CSV 文件中读取 Iris 数据集,将其存储为 Pandas 的 DataFrame
iris = pd.read_csv(r'F:\data\iris.csv')
# 设置图形大小为 (15, 6) inches
plt.figure(figsize=(15, 6))
# 使用 Seaborn 绘制散点图
sns.scatterplot(x='sepal_length',  # 横坐标为 'sepal_length'y='sepal_width',  # 纵坐标为 'sepal_width'hue='species',  # 颜色按 'species' 划分data=iris)  # 数据来自于 Iris 数据集
# 显示图形
plt.show()

在这里插入图片描述

2、箱线图

import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库
import seaborn as sns  # 导入 Seaborn 库并使用别名 sns# 从 CSV 文件中读取 Iris 数据集,将其存储为 Pandas 的 DataFrame
iris = pd.read_csv(r'F:\data\iris.csv')
# 设置图形大小为 (15, 6) inches
plt.figure(figsize=(15, 6))# 使用 Seaborn 绘制箱线图,根据 'species' 分组,展示花瓣长度的分布情况
sns.boxplot(x='species',  # 横坐标为 'species'y='petal_length',  # 纵坐标为 'petal_length'hue='species',  # 颜色按 'species' 划分data=iris)  # 数据来自于 Iris 数据集# 显示图形
plt.show()

在这里插入图片描述

3、直方核密度图

import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库
import seaborn as sns  # 导入 Seaborn 库并使用别名 sns# 从 CSV 文件中读取 Iris 数据集,将其存储为 Pandas 的 DataFrame
iris = pd.read_csv(r'F:\data\iris.csv')
# 设置图形大小为 (15, 6) inches
plt.figure(figsize=(15, 6))# 使用 Seaborn 绘制直方图,根据 'species' 分组,展示花瓣长度的分布情况
sns.histplot(data=iris,  # 数据来自于 Iris 数据集x='petal_length',  # 横坐标为 'petal_length'hue='species',  # 颜色按 'species' 划分kde=True)  # 在直方图上绘制核密度估计曲线# 显示图形
plt.show()

在这里插入图片描述

4、成对图

import pandas as pd  # 导入 Pandas 库并使用别名 pd
import matplotlib.pyplot as plt  # 导入 Matplotlib 库
import seaborn as sns  # 导入 Seaborn 库并使用别名 sns# 从 CSV 文件中读取 Iris 数据集,将其存储为 Pandas 的 DataFrame
iris = pd.read_csv(r'F:\data\iris.csv')# 使用 Seaborn 绘制成对关系图,显示不同特征之间的关系
# 横轴和纵轴的关系用散点图表示,对角线上是每个特征的单变量分布(直方图或核密度估计)
sns.pairplot(data=iris,  # 数据来自于 Iris 数据集hue='species',  # 颜色按 'species' 划分markers=["o", "s", "D"],  # 指定不同类别的标记样式palette='Set2')  # 指定颜色方案# 显示图形
plt.show()

在这里插入图片描述

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/dqnT/2367.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

从零开始学习Netty - 学习笔记 - NIO基础 - 文件编程:FileChannel,Path,Files

3.文件编程 3.1.FileChannel FileChannel只能工作在非阻塞模式下面,不能和selector一起使用 获取 不能直接打开FIleChannel,必须通过FileInputSream,或者FileOutputSetream ,或者RandomAccessFile来获取FileChannel 通过FileIn…

如何使用Docker本地部署Jupyter+Notebook容器并结合内网穿透实现远程访问

文章目录 1. 选择与拉取镜像2. 创建容器3. 访问Jupyter工作台4. 远程访问Jupyter工作台4.1 内网穿透工具安装4.2 创建远程连接公网地址4.3 使用固定二级子域名地址远程访问 本文主要介绍如何在Ubuntu系统中使用Docker本地部署Jupyter Notebook,并结合cpolar内网穿透…

《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)

文章目录 10.1 构建微服务架构 - 探索 Go 语言的微观世界10.1.1 基础知识讲解10.1.2 重点案例:订单处理系统订单服务测试服务10.1.3 拓展案例 1:用户认证服务安装所需的包实现用户模型和存储实现 JWT 生成和验证实现认证服务测试服务10.1.4 拓展案例 2:商品推荐服务设计商品…

深入浅出熟悉OpenAI最新大作Sora文生视频大模型

蠢蠢欲动,惴惴不安,朋友们我又来了,这个春节真的过的是像过山车,Gemini1.5 PRO还没过劲,OpenAI又放大招,人类真的要认输了吗,让我忍不住想要再探究竟,到底是什么让文生视频发生了质的…

Fiddler工具 — 19.Fiddler抓包HTTPS请求(二)

5、查看证书是否安装成功 方式一: 点击Tools菜单 —> Options... —> HTTPS —> Actions 选择第三项:Open Windows Certificate Manager打开Windows证书管理器。 打开Windows证书管理器,选择操作—>查看证书,在搜索…

建造者模式

1.模式定义: 将一个复杂对象的创建与他的表示分离,使得同样的构建过程可以创建不同的表示 2.应用场景 1.需要生成的对象具有复杂的内部结构 2.需要生成的对象内部属性本身相互依赖 3.与不可变对象配合使用 3.优点: 1、建造者独立,易扩展…

Django视图

HttpRequests对象 利用http协议向服务器传参的4种途径 提取url特定部分,如/web/index/,可以通过在服务器端的路由中用正则表达式截取查询字符串,形如?key1value&keyvalue2,(?前面是路由,…

C++ 调用js 脚本

需求: 使用Qt/C 调用js 脚本。Qt 调用lua 脚本性能应该是最快的,但是需要引入第三方库,虽然也不是特别麻烦,但是调用js脚本,确实内置的功能(C 调用lua 脚本-CSDN博客) 步骤: 1&…

鸿蒙会成为安卓的终结者吗?

随着近期鸿蒙OS系统推送测试版的时间确定,关于鸿蒙系统的讨论再次升温。 作为华为自主研发的操作系统,鸿蒙给人的第一印象是具有颠覆性。 早在几年前,业内就开始流传鸿蒙可能会代替Android的传言。毕竟,Android作为开源系统&…

蓝桥杯嵌入式第9届真题(完成) STM32G431

蓝桥杯嵌入式第9届真题(完成) STM32G431 题目 分析和代码 main.h /* USER CODE BEGIN Header */ /********************************************************************************* file : main.h* brief : Header for main.c file.* …

[论文精读]Do Transformers Really Perform Bad for Graph Representation?

论文网址:[2106.05234] Do Transformers Really Perform Bad for Graph Representation? (arxiv.org) 论文代码:https://github.com/Microsoft/Graphormer 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼…

几个常见的C/C++语言冷知识

当涉及到C/C语言时,有一些冷知识可能并不为人所熟知,但却可以让你更深入地理解这门古老而强大的编程语言。以下是一些有趣的C/C语言冷知识。 1. 数组的下标可以是负数 在我们日常的C语言编程中,数组是一个非常常见的数据结构。我们习惯性地使…

【C语言】深度探讨文件操作(一)

文章目录 📝前言🌠 为什么使用文件?🌉什么是文件? 🌠程序文件🌉数据文件 🌠文件名🌉二进制文件和文本文件? 🌠文件的打开和关闭🌉 流和…

FPS游戏漫谈弱网环境时延优化

游戏在弱网情况下会变得体验很差,玩家的直观感受就是我的操作怎么没有反应,整个游戏世界都是一卡一顿的。这个就是因为网络问题导致了游戏体验变差。 那什么是弱网环境?弱网环境就是指网络不好的环境,尤其是移动网络下&#xff0…

edge安装fdm插件

下载 https://www.crxsoso.com/webstore/detail/ahmpjcflkgiildlgicmcieglgoilbfdp 安装 进入edge插件管理页面 edge://extensions/2. 将下载的crt文件拖到这个页面,就能自动安装了 在其他网页不能安装,会变成下载。

压缩感知常用的测量矩阵

测量矩阵的基本概念 在压缩感知(Compressed Sensing,CS)理论中,测量矩阵(也称为采样矩阵)是实现信号压缩采样的关键工具。它是一个通常为非方阵的矩阵,用于将信号从高维空间映射到低维空间&…

calcite在flink中的二次开发,介绍解析器与优化器

calcite 在flink中的二次开发 1 CodeGen2 flink 语法扩展2.1 在进行 Rule 规则匹配时,放开对 Distinct 的限制2.2下面附上一个 利用codegen来生成所需类的例子: 3 flink使用calcite 生成解析器FlinkSqlParserImpl3.1 FlinkSqlParserImpl 的生成3.1.1 fli…

尝试一下最新的联合办公利器ONLYOffice

下载下来一起试试吧 桌面安装版下载地址:https://www.onlyoffice.com/zh/download-desktop.aspx) 官网地址:https://www.onlyoffice.com 普通Office对联合办公的局限性 普通Office软件(如Microsoft Office、Google Docs等)在面对…

shell脚本实现菜单案例......

系统命令: $REPLY : 当没有参数变量提供给read命令的时候,这个变量会作为默认变量提供给read命令 1.select命令写菜单 #!/bin/bash PS3"please input your choice>>>:" select MENU in {A..E};docase $REPLY inA)date;;B)pwd;;C)who…

OpenCV-42 直方图均匀化

目录 一、直方图均匀化原理 二、直方图均匀化在OpenCV中的运用 一、直方图均匀化原理 直方图均匀化是通过拉伸像素强度的分布范围,使得在0~255灰阶上的分布更加均匀,提高图像的对比度。达到改善图像主管视觉效果的目的。对比度较低的图像适合使用直方…
推荐文章