当前位置: 首页 > news >正文

Python数据分析:数据可视化(Matplotlib、Seaborn)

数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个综合详细的例子。

一、Matplotlib

Matplotlib是Python中最基础也是最强大的数据可视化库之一。它提供了一整套绘图工具,可以创建各种类型的图表,如折线图、柱状图、散点图、饼图等。

1.1 Matplotlib基础

基本使用

Matplotlib的基本使用非常简单,只需要导入matplotlib.pyplot模块,然后使用其各种绘图函数即可。

import matplotlib.pyplot as plt# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 绘制折线图
plt.plot(x, y)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('简单折线图')
plt.show()

设置图形属性

我们可以通过设置各种属性来定制图形的外观。

# 设置线条属性
plt.plot(x, y, color='green', marker='o', linestyle='dashed', linewidth=2, markersize=12)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('设置线条属性的折线图')
plt.show()

多图绘制

使用subplot函数可以在同一个窗口中绘制多个图形。

# 创建数据
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]# 创建子图
plt.subplot(2, 1, 1)
plt.plot(x, y1, 'r--')
plt.title('第一个子图')plt.subplot(2, 1, 2)
plt.plot(x, y2, 'g*-')
plt.title('第二个子图')plt.show()

1.2 Matplotlib高级

图例和标签

我们可以为图形添加图例和标签,以便更好地解释图表内容。

# 创建数据
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]# 绘制折线图
plt.plot(x, y1, label='质数')
plt.plot(x, y2, label='平方数')# 添加图例和标签
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('添加图例和标签的折线图')
plt.legend()
plt.show()

注释和文本

可以在图表中添加注释和文本,以便更详细地解释图表中的数据点。

# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 绘制折线图
plt.plot(x, y)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('添加注释的折线图')# 添加注释
plt.annotate('最高点', xy=(5, 11), xytext=(4, 9),arrowprops=dict(facecolor='black', shrink=0.05))plt.show()

图表样式

Matplotlib提供了许多内置的样式,可以轻松更改图表的整体外观。

# 使用内置样式
plt.style.use('ggplot')# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 绘制折线图
plt.plot(x, y)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('使用ggplot样式的折线图')
plt.show()

二、Seaborn

Seaborn是基于Matplotlib构建的高级数据可视化库,提供了更简洁的API和更美观的默认样式,特别适合用于统计数据的可视化。

2.1 Seaborn基础

安装和导入

安装Seaborn非常简单,可以使用pip命令:

pip install seaborn

导入Seaborn也非常简单:

import seaborn as sns
import matplotlib.pyplot as plt

基本使用

Seaborn的基本使用方法与Matplotlib类似,但提供了更简洁的接口和更美观的默认样式。

# 导入数据集
tips = sns.load_dataset('tips')# 绘制散点图
sns.scatterplot(x='total_bill', y='tip', data=tips)
plt.xlabel('总账单')
plt.ylabel('小费')
plt.title('总账单与小费的关系')
plt.show()

绘制不同类型的图表

Seaborn提供了许多用于绘制不同类型图表的函数,如箱线图、柱状图、热力图等。

# 箱线图
sns.boxplot(x='day', y='total_bill', data=tips)
plt.xlabel('星期几')
plt.ylabel('总账单')
plt.title('不同星期几的总账单分布')
plt.show()# 热力图
flights = sns.load_dataset('flights')
flights_pivot = flights.pivot('month', 'year', 'passengers')
sns.heatmap(flights_pivot, annot=True, fmt='d', cmap='YlGnBu')
plt.xlabel('年份')
plt.ylabel('月份')
plt.title('不同年份和月份的乘客数量')
plt.show()

2.2 Seaborn高级

调整图表样式

Seaborn提供了一些函数可以调整图表的样式。

# 设置图表样式
sns.set_style('whitegrid')# 绘制散点图
sns.scatterplot(x='total_bill', y='tip', data=tips)
plt.xlabel('总账单')
plt.ylabel('小费')
plt.title('总账单与小费的关系')
plt.show()

多图绘制

使用FacetGrid可以在同一个窗口中绘制多个图形,方便进行对比分析。

# 使用FacetGrid绘制多个图形
g = sns.FacetGrid(tips, col='time')
g.map(sns.scatterplot, 'total_bill', 'tip')
plt.show()

三、综合实例

下面是一个综合详细的例子,展示如何使用Matplotlib和Seaborn进行数据可视化。

3.1 示例数据集

我们将使用一个模拟的数据集,包含一些产品的销售数据。

import pandas as pd
import numpy as np# 创建数据集
np.random.seed(0)
dates = pd.date_range('20230101', periods=100)
df = pd.DataFrame({'date': dates,'product': np.random.choice(['A', 'B', 'C', 'D'], size=100),'sales': np.random.randint(50, 200, size=100),'profit': np.random.randint(20, 100, size=100)
})

3.2 使用Matplotlib进行数据可视化

销售趋势折线图

我们首先使用Matplotlib绘制产品销售趋势的折线图。

import matplotlib.pyplot as plt# 按日期汇总销售数据
sales_trend = df.groupby('date')['sales'].sum()# 绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(sales_trend.index, sales_trend.values)
plt.xlabel('日期')
plt.ylabel('销售额')
plt.title('销售趋势折线图')
plt.show()

各产品销售额柱状图

接下来,我们绘制各产品销售额的柱状图。

# 按产品汇总销售数据
product_sales = df.groupby('product')['sales'].sum()# 绘制柱状图
plt.figure(figsize=(8, 6))
plt.bar(product_sales.index, product_sales.values, color=['red', 'blue', 'green', 'purple'])
plt.xlabel('产品')
plt.ylabel('销售额')
plt.title('各产品销售额柱状图')
plt.show()

3.3 使用Seaborn进行数据可视化

销售和利润的散点图

我们使用Seaborn绘制销售和利润的散点图。

import seaborn as sns# 绘制散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(x='sales', y='profit', hue='product', data=df)
plt.xlabel('销售额')
plt.ylabel('利润')
plt.title('销售额与利润的关系')
plt.show()

产品销售分布箱线图

我们使用Seaborn绘制各产品销售分布的箱线图。

# 绘制箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(x='product', y='sales', data=df)
plt.xlabel('产品')
plt.ylabel('销售额')
plt.title('各产品销售分布箱线图')
plt.show()

3.4 综合实例的输出结果

通过运行上述代码,我们可以得到一系列图表,这些图表直观地展示了销售数据的分布和趋势。

  1. 销售趋势折线图:展示了整个时间段内的销售趋势,帮助我们识别出销售高峰和低谷。
  2. 各产品销售额柱状图:展示了不同产品的销售额对比,帮助我们确定哪些产品最受欢迎。
  3. 销售额与利润的散点图:展示了销售额和利润之间的关系,帮助我们分析销售和利润的相关性。
  4. 各产品销售分布箱线图:展示了不同产品的销售分布情况,帮助我们识别出销售额的集中区域和异常值。

通过这些图表,我们可以更好地理解和解释数据,从而做出更明智的决策。

四、总结

本文详细介绍了Python中两个主要的数据可视化库——Matplotlib和Seaborn的使用方法,并通过一个综合实例展示了如何使用这两个库进行数据可视化。Matplotlib提供了强大的绘图功能和高度的定制性,而Seaborn则提供了更简洁的接口和更美观的默认样式。根据不同的需求,我们可以选择合适的库进行数据可视化,从而更好地理解和解释数据。

作者:Rjdeng
链接:https://juejin.cn/post/7399985797540069386

相关文章:

Python数据分析:数据可视化(Matplotlib、Seaborn)

数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个…...

Java CompletableFuture:你真的了解它吗?

文章目录 1 什么是 CompletableFuture?2 如何正确使用 CompletableFuture 对象?3 如何结合回调函数处理异步任务结果?4 如何组合并处理多个 CompletableFuture? 1 什么是 CompletableFuture? CompletableFuture 是 Ja…...

5个免费在线 AI 绘画网站推荐,附100+提示词!

在数字化时代,艺术创作与人工智能的结合已带来前所未有的创新体验。AI 绘画技术,基于先进的人工智能算法,为艺术创作提供了全新的视角和工具。当前,多个免费在线AI绘画平台应运而生,为创作者们提供了丰富的灵感和创作机…...

C++基础语法:while的使用

前言 "打牢基础,万事不愁" .C的基础语法的学习."学以致用,边学边用",编程是实践性很强的技术,在运用中理解,总结. 引入 while的使用是编写代码的基础内容.笔者的记忆力已不如以前,最近遇到了还花了不少功夫,可见是掌握地不够牢固.所以对while的思路和内容…...

鹏哥C语言自定义笔记重点(29-)

29.函数指针数组 30.void指针是不能直接解引用,也不能-整数。 void*是无具体类型的指针,可以接受任何类型的地址。 31.qsort:使用快速排序的思想实现一个排序函数(升序) 32. 33.地址的字节是4/8 34.char arr[]{a,b} sizeof(arr[0]1)答案是4&#xff0…...

代码随想录算法训练营第六十天 | dijkstra(堆优化版)、Bellman_ford 算法精讲

一、dijkstra(堆优化版) 题目连接:47. 参加科学大会(第六期模拟笔试) (kamacoder.com) 文章讲解:代码随想录 (programmercarl.com)——dijkstra(堆优化版) 二、Bellman_ford 算法精讲…...

boost::asio 库版本,C/C++代码编译兼容性

1、boost::asio::spawn 开启有栈(stackful)协同程序,版本改进及限制 > boost_1_80 版本应采用以下方式。 auto f [self, this](const boost::asio::yield_context& y) noexcept {bool success_ do_handshake(y);if (!success_) {clo…...

前端开发的项目导入方法与应用

前端项目启动问题归集: 由于前端的项目对于npm的版本有要求,需要将其升级到20,所以必要的时候通过nvm,或者直接下载最新的安装包进行npm覆盖安装。在项目目录中应用npm i安装node_modules,如果没有正常安装的话&#…...

C++:模拟实现string

前言&#xff1a; 为了更好的理解string底层的原理&#xff0c;我们将模拟实现string类中常用的函数接口。为了与std里的string进行区分&#xff0c;所以用命名空间来封装一个自己的strin类。 string.h #pragma once #define _CRT_SECURE_NO_WARNINGS 1#include<iostream&…...

浅谈Kafka(一)

浅谈Kafka&#xff08;一&#xff09; 文章目录 浅谈Kafka&#xff08;一&#xff09;Kafa的设计是什么样的数据传输的事务定义消息队列的应用场景Kafka怎么样判断节点是否存活Kafka的消息是采用pull模式还是push模式Kafka在磁盘上的消息格式Kafka高效文件存储设计特点Kafka与传…...

Redis7基础篇(八)

redis集群 是什么 能干吗 集群算法-分片-槽位slot redis集群的槽位slot redis集群的分片 分片和槽位的优势 槽位映射的解决方案 上面的三个方案分别对应了小厂 中厂 大厂 哈希槽取余分区 缺点 一致性哈希算法分区 小总结 哈希槽分区 经典面试题 这里说的redis是ap而不是cp的 …...

Tauri简介

在Tauri应用中&#xff0c;Rust和前端&#xff08;通常是基于Web技术如React、Vue或Angular&#xff09;之间的交互是一个核心特性&#xff0c;它允许开发者利用Rust的强大功能和性能&#xff0c;同时保持前端开发的灵活性和丰富的生态系统。这种交互主要通过Tauri提供的API桥接…...

JavaWeb——MVC架构模式

一、概述: MVC(Model View Controller)是软件工程中的一种 软件架构模式 &#xff0c;它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码&#xff0c;将业务逻辑聚集到一个部件里面&#xff0c;在改进和个性化定制界面及用户…...

Excel求和方法之

一 SUM&#xff08;&#xff09;&#xff0c;选择要相加的数,回车即可 二 上面的方法还不够快。用下面这个 就成功了 三 还有一种一样快的 选中之后&#xff0c;按下Alt键和键&#xff08;即Alt&#xff09;...

Windows Server 域控制服务器安装及相关使用

目录 1.将客户机加入域 2.安装域控制器 3.新建域用户 4.设置用户登录时间&#xff0c;账户过期时间 5.软件分发 ​编辑 6.换壁纸 7.OU与GPO的概念 域为集中控制&#xff0c;拿下域控是拿下目标的关键 以Windows Server 2022为例 1.将客户机加入域 前提&#xff1a;客…...

linux基础命令(超级详细)

Linux 系统提供了丰富的命令行工具&#xff0c;用于各种文件操作、系统管理和网络配置等任务。以下是一些常用的 Linux 基础命令&#xff1a; 一、 文件和目录操作 1. ls: 列出目录内容 ls 列出当前目录的文件和目录 ls -l 以长格式列出文件和目录&#xff0c;包…...

大模型笔记之-XTuner微调个人小助手认知

前言 使用XTuner 微调个人小助手认知 一、下载模型 #安装魔搭依赖包 pip install modelscope新建download.py内容如下 其中Shanghai_AI_Laboratory/internlm2-chat-1_8b是魔搭对应的模型ID cache_dir/home/aistudio/data/model’为指定下载到本地的目录 from modelscope im…...

用TensorFlow实现线性回归

说明 本文采用TensorFlow框架进行讲解&#xff0c;虽然之前的文章都采用mxnet&#xff0c;但是我发现tensorflow提供了免费的gpu可供使用&#xff0c;所以果断开始改为tensorflow&#xff0c;若要实现文章代码&#xff0c;可以使用colaboratory进行运行&#xff0c;当然&#…...

IT计算机软件系统类毕业论文结构指南:从标题到结论的全景视角

一、背景 在快速发展的IT和人工智能领域&#xff0c;毕业论文不仅是学术研究的重要成果&#xff0c;也展示了学生掌握新技术和应用的能力。随着大数据和智能系统的复杂性增加&#xff0c;毕业设计&#xff08;毕设&#xff09;的论文章节安排变得尤为关键。一个结构清晰、内容详…...

leetcode27:移除元素(正解)

移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下操作&#xf…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...