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

news2025/1/21 9:29:49

目录

  • 一、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,  # 设置折线宽度为3
         linestyle=':',  # 设置折线样式为虚线(折线样式:'-', '--', '-.', ':', '')
         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.coloradmin.cn/o/1455009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Eliminating Domain Bias for Federated Learning in Representation Space【文笔可参考】

文章及作者信息: NIPS2023 Jianqing Zhang 上海交通大学 之前中的NeurIPS23论文刚今天传到arxiv上,这次我把federated learning的每一轮看成是一次bi-directional knowledge transfer过程,提出了一种促进server和client之间bi-direction…

浅析Linux设备驱动:IO端口和IO内存

文章目录 概述IO端口和IO内存的区别 IO资源管理IO资源类型IO端口资源IO内存资源 IO资源分配 IO端口访问IO端口操作函数 IO内存访问IO内存操作函数 相关参考 概述 在计算机系统中,外部设备通常会提供一组寄存器或内存用于处理器配置和访问设备功能。这些寄存器或内存…

MCU电源控制(PWR)与低功耗

目录 一、STM32 的内核和外设电源系统管理: 二、MCU电源监控: 三、三种低功耗模式: 1、睡眠模式: 2、停止模式: 3、待机模式: 一、STM32 的内核和外设电源系统管理: ① 电池备份区域&#…

思迈特再获国家权威认证:代码自主率98.78%

日前,思迈特软件自主研发的商业智能与数据分析软件(Smartbi Insight)通过中国赛宝实验室(工业和信息化部电子第五研究所)代码扫描测试,Smartbi Insight V11版本扫描测得代码自主率为98.78%的好成绩&#xf…

原创详解OpenAI Sora是什么?技术先进在哪里?能够带来什么影响?附中英文技术文档

一:Sora是什么 Sora是一个文本到视频的模型,由美国的人工智能研究机构OpenAI开发。Sora可以根据描述性的文本提示,生成高质量的视频,也可以根据已有的视频,向前或向后延伸,生成更长的视频。 Sora的主要功…

【完全二叉树节点数!】【深度优先】【广度优先】Leetcode 222 完全二叉树的节点个数

【完全二叉树】【深度优先】【广度优先】Leetcode 222 完全二叉树的节点个数 :star:解法1 按照完全二叉树解法2 按照普通二叉树:深度优先遍历 后序 左右中解法3 按照普通二叉树:广度优先遍历 层序遍历 ---------------🎈🎈题目链接…

【漏洞复现-通达OA】通达OA swfupload_new存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

~汉诺塔~(C语言)~

引言 汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从上面开始按大小顺序重新摆放在…

[计算机网络]深度学习传输层TCP协议

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录专栏:深度学习传输层TCP协议 🎉欢迎大家点赞👍评论📝收藏⭐文章 [计算机网络]深度学习传输层TCP协议 前提概括一: TCP协议段格式二:确认应答三:超时重传四:…

IgG1 (mouse), ELISA kit——ENZO热销产品

90分钟内可得结果的高特异性定量ELISA试剂盒 免疫球蛋白G(IgG)是一种免疫球蛋白单体,由两条(γ)重链和两条轻链组成。每个IgG分子包含两个抗原结合域和一个效应(Fc)域。Enzo Life Sciences可提供…

【hcie-cloud】【29】华为云Stack数据安全服务

文章目录 前言数据安全概述数据产业发展和敏感数据上云趋势下对数据安全的需求重大隐私数据泄露事件云端数据安全问题成为业务上云的主要障碍数据安全相关法律法规密集出台数据安全法 - 欧盟的GDPR中国的数据安全法端到端考虑数据安全数据安全生命周期华为云Stack全生命周期数据…

七、Mybatis缓存

缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存、可以避免频繁的与数据库进行交互,进而提高响应速度一级缓存是sqlSession级别的缓存,在操作数据库时需要构造sqlsession对象,在对象中有一个数据结构&a…

WEB APIs(2)

应用定时器可以写一个定时轮播图&#xff0c;如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&qu…

React 更改程序入口点(index.js文件位置变更)

食用前提示&#xff1a;本文基于已经快速配置好的React环境而作&#xff0c;配置React环境详见拙作&#xff1a;React环境配置-CSDN博客~ 一、了解默认入口点 使用create-react-app快速搭建react环境后&#xff0c;npm start启动程序的默认入口点为/src/index(即src目录下的ind…

《白话C++》第10章 STL和boost,Page70~72 boost::scoped_ptr

《泛型》篇中提到的某个IT项目的辩论会&#xff0c; 一派坚持智能指针和裸指针可以“离婚”&#xff0c;它们是std::auto_ptr的支持者&#xff0c; 一派认为智能指针和裸指针不可以“离婚”&#xff0c;boost::scoped_ptr体现了他们的观点&#xff1a; boost::scoped_ptr基本…

OpenAI视频生成模型Sora的全面解析:从扩散Transformer到ViViT、DiT、VideoPoet

前言 真没想到&#xff0c;距离视频生成上一轮的集中爆发才过去三个月&#xff0c;没想OpenAI一出手&#xff0c;该领域又直接变天了 自打2.16日OpenAI发布sora以来&#xff0c;不但把同时段Google发布的Gemmi Pro 1.5干没了声音&#xff0c;而且网上各个渠道&#xff0c;大量…

NHANES数据库使用(1)

官网&#xff1a;NHANES - National Health and Nutrition Examination Survey Homepagehttps://www.cdc.gov/nchs/nhanes/index.htm 1、打开数据库 2、 选择数据集 B区检索方法和变量。C区检索数据集。A区含有B区和C区的功能。选择 NHANES 2017-March 2020打开。 3、打开数据…

普通人做抖音小店真的能赚钱吗?别在做美梦了,都醒醒吧!

大家好&#xff0c;我是电商糖果 糖果做电商七年了&#xff0c;这中间也起起落落过&#xff0c;2020年开始做抖音小店。 虽然靠着小店自己有了团队&#xff0c;翻了身。 但是只要有人问糖果&#xff0c;普通人做抖音小店真的能赚到钱吗&#xff1f; 我的回答依旧是看个人。…

最长子串和回文子串相关的算法题解

这里写目录标题 一、3. 无重复字符的最长子串二、5. 最长回文子串三、647. 回文子串四、516. 最长回文子序列 一、3. 无重复字符的最长子串 中等 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释:…

ClickHouse从入门到精通(高级)

第1章 Explain查看执行计划 第2章 建表优化 第3章 ClickHouse语法优化规则 第4章 查询优化 第5章 数据一致性(重点) 第6章 物化视图 第7章 MaterializeMySQL引擎 第8章 常见问题排查