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

Seaborn数据可视化实战:Seaborn数据可视化实战入门

Seaborn数据可视化实战:从数据到图表的完整旅程

学习目标

通过本课程的学习,你将能够掌握使用Seaborn进行数据可视化的完整流程,从数据准备到图表设计,再到最终的图表呈现。本课程将通过一个具体的项目案例,帮助你全面提升数据可视化的能力。

相关知识点

Seaborn数据可视化实战

学习内容

1 Seaborn数据可视化实战

1.1 数据准备与处理

在数据可视化的过程中,环境准备与数据处理是至关重要的第一步。良好的数据准备可以确保后续的图表设计更加顺利,同时也能提高图表的准确性和可读性。本节将介绍如何使用Pandas进行数据的加载、清洗和预处理,为Seaborn图表的绘制打下坚实的基础。

  • 安装必要的库
%pip install seaborn
  • 获取数据集
!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/4f5446b230a511f0a22bfa163edcddae/data.csv --no-check-certificate
  • 数据加载

    首先,我们需要加载数据。Python中常用的库Pandas提供了强大的数据处理功能,可以轻松地从多种数据源加载数据。例如,从CSV文件加载数据可以使用pandas.read_csv()函数。

import pandas as pd# 加载数据
data = pd.read_csv('data.csv')# 查看数据的前5行
print(data.head())
  • 数据清洗

    数据清洗是数据准备的重要环节,包括处理缺失值、异常值和重复值等。Pandas提供了多种方法来处理这些问题。

# 检查缺失值
print(data.isnull().sum())# 填充缺失值
data.fillna(0, inplace=True)# 删除重复值
data.drop_duplicates(inplace=True)
  • 数据预处理

    数据预处理包括数据的转换和标准化,以确保数据适合进行可视化。例如,可以将分类数据转换为数值数据,或者对数值数据进行标准化处理。

# 将分类数据转换为数值数据
data['Species'] = data['Species'].map({'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2})# 对数值数据进行标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']] = scaler.fit_transform(data[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']])
1.2 Seaborn图表设计

Seaborn是一个基于Matplotlib的高级数据可视化库,它提供了许多高级图表类型和美观的默认样式。本课程将介绍如何使用Seaborn绘制各种图表,包括散点图、折线图、柱状图和热力图等。

  • 散点图

散点图用于展示两个变量之间的关系。Seaborn的scatterplot函数可以轻松绘制散点图。

import seaborn as sns
import matplotlib.pyplot as plt# 绘制散点图
sns.scatterplot(x='SepalLengthCm', y='SepalWidthCm', data=data, hue='Species')
plt.title('Scatter Plot of Sepal Length and Width for Different Iris Species ')
plt.xlabel('SepalLengthCm')
plt.ylabel('SepalWidthCm')plt.tight_layout()  # 自动调整布局
plt.show()

在这里插入图片描述

  • 折线图

    折线图用于展示数据随时间的变化趋势。Seaborn的lineplot函数可以绘制折线图。

# 绘制折线图
sns.lineplot(x='SepalLengthCm', y='SepalWidthCm', data=data, hue='Species')
plt.title('The relationship between petal length and sepal width in Iris flowers')
plt.xlabel('SepalLengthCm')
plt.ylabel('SepalWidthCm')
plt.show()

在这里插入图片描述

  • 柱状图

    柱状图用于展示分类数据的分布情况。Seaborn的barplot函数可以绘制柱状图。

# 绘制柱状图
sns.barplot(x='Species', y='SepalLengthCm', data=data, hue='Species')
plt.title('Sepal Length by Iris Species')
plt.xlabel('Species')
plt.ylabel('SepalLengthCm')
plt.show()

在这里插入图片描述

  • 热力图

    热力图用于展示数据矩阵中的值。Seaborn的heatmap函数可以绘制热力图。

# 绘制热力图
correlation_matrix = data.corr()
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Heatmap of Correlation Matrix')
plt.show()

在这里插入图片描述

1.3 图表优化与呈现

图表的优化和呈现是数据可视化的重要环节,可以提升图表的美观性和可读性。本课程将介绍如何使用Seaborn和Matplotlib进行图表的优化,包括调整图表样式、添加注释和保存图表等。

  • 调整图表样式

Seaborn提供了多种样式设置,可以调整图表的背景、颜色和字体等。

# 设置Seaborn样式
sns.set(style="white")  # 浅蓝色背景
plt.figure(facecolor='lightblue')  # 绘制柱状图
ax = sns.barplot(x='Species', y='SepalLengthCm', data=data, color="#F8B195")# 设置标题和轴标签的字体样式
plt.title('Sepal Length Distribution by Iris Species', fontsize=16, fontweight='bold')
plt.xlabel('Species', fontsize=14)
plt.ylabel('SepalLengthCm', fontsize=14)# 调整刻度标签字体大小
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)# 显示图表
plt.show()

在这里插入图片描述

  • 添加注释

    在图表中添加注释可以提供更多的信息,帮助读者更好地理解图表。

# 绘制柱状图
sns.barplot(x='Species', y='SepalLengthCm', data=data)
plt.title('Bar Plot of SepalLengthCm by Species')
plt.xlabel('Species')
plt.ylabel('SepalLengthCm')# 添加注释
for index, row in data.groupby('Species').mean().iterrows():value = row['SepalLengthCm']plt.text(index, value, f'{value:.2f}', ha='center', va='bottom')# 显示图表
plt.show()

在这里插入图片描述

  • 保存图表

    将图表保存为文件可以方便地在报告或演示中使用。Matplotlib的savefig函数可以将图表保存为多种格式。

# 绘制柱状图
sns.barplot(x='Species', y='SepalLengthCm', data=data, palette="Set2", hue='Species')
plt.title('Bar Plot of SepalLengthCm by Species')
plt.xlabel('Species')
plt.ylabel('SepalLengthCm')# 保存图表
plt.savefig('bar_plot.png')plt.show()

在这里插入图片描述

http://www.dtcms.com/a/350419.html

相关文章:

  • 我的小灶坑
  • 使用 gemini 来分析 github 项目
  • 【Day 33】Linux-Mysql日志
  • Linux 系统内存不足导致服务崩溃的排查方法
  • 跨站脚本攻击(XSS)分类介绍及解决办法
  • 单北斗变形监测系统应用维护指南
  • 59 C++ 现代C++编程艺术8-智能指针
  • 探索量子计算的新前沿
  • 深度学习之第三课PyTorch( MNIST 手写数字识别神经网络模型)
  • Telematics Control Unit(TCU)的系统化梳理
  • 从零开始学习单片机14
  • Fory序列化与反序列化
  • 以正确方式构建AI Agents:Agentic AI的设计原则
  • 技术速递|使用 AI 应用模板扩展创建一个 .NET AI 应用与自定义数据进行对话
  • 【Hadoop】HDFS 分布式存储系统
  • Nuxt.js@4 中管理 HTML <head> 标签
  • 【二叉树 - LeetCode】236. 二叉树的最近公共祖先
  • TAISAW钛硕|TST嘉硕Differential output Crystal Oscillator - TW0692AAAE40
  • [electron]开发环境驱动识别失败
  • 深度学习篇--- ResNet-18
  • ArXiv 每日论文追踪器:自动检索、双语总结、邮件推送、一键建站
  • QML 中 的 Row 和 RowLayout
  • (一)C#基础(异步)
  • 数字图像处理(二)
  • 面向机器人推动与抓取任务自适应算法研究
  • langchain的简单应用案例---(2)使用Memory实现一个带记忆的对话机器人
  • 工作记录 2015-10-29
  • 销售额和营业收入的区别在哪?哪个值应该更大一些?
  • 新项目,如何做成本估算?
  • 本地缓存与 Redis 缓存的区别与实际应用