探索 Python:发现有趣的库——第 1 章:数据可视化之旅

news2024/11/28 23:11:19

在一个充满活力的科技世界中,数据分析专家“算法仙”和编程爱好者“代码侠”相遇了,决定一起踏上数据可视化的探险之旅。他们将运用 Matplotlib 和 Seaborn 这两个强大的 Python 库,将枯燥的数据转化为生动的图形。

算法仙:你好,代码侠!今天我们将一起探索数据可视化的奇妙世界。

代码侠:听起来很刺激!我们该从哪儿开始呢?

算法仙:首先,我们需要安装 seaborn 和 matplotlib。

 pip install seaborn matplotlib 

基础图表

算法仙:接下来让我们从基础开始,用 Matplotlib 画一幅折线图如何?

代码侠:好的,折线图听起来像是一个很好的起点。

折线图

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y)
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.title('Simple Line Plot')
plt.show()

在这里插入图片描述

代码侠:哇,真是太有趣了!那柱状图呢?

算法仙:柱状图是展示和比较不同类别数据的绝佳方式。

柱状图

import matplotlib.pyplot as plt
import seaborn as sns

# 数据
data = {
    "categories": ['Category A', 'Category B', 'Category C'],
    "values":  [10, 20, 15]
}

# 绘制柱状图
sns.barplot(data=data, x='categories', y='values', hue='categories')
plt.title('Category Comparison')
plt.show()

在这里插入图片描述

代码侠:那散点图又是用来做什么的?

算法仙:散点图是探索两个变量之间关系的强大工具。

散点图

import matplotlib.pyplot as plt
import seaborn as sns

# 数据
data = {
    'X Value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'Y Value': [2, 4, 5, 4, 5, 7, 8, 6, 5, 4]
}

# 绘制散点图
sns.scatterplot(data=data, x='X Value', y='Y Value', hue='Y Value')
plt.title('Scatter Plot')
plt.show()

在这里插入图片描述

算法仙:看看这些点,它们似乎在告诉我们一些有趣的故事。

进阶可视化

代码侠:听说你最近在研究进阶的数据可视化技术?我也对这个很感兴趣。

算法仙:对啊,我正在探索如何使用 Seaborn 和 Matplotlib 制作更复杂的图表。你知道,不仅仅是普通的折线图和柱状图,而是更炫酷的那种。

代码侠:比如说?

算法仙:比如热力图、对比图和3D图表。这些可视化方式能帮助我们更好地理解和展示复杂的数据集。

代码侠:听起来很有趣!你能给我演示一下如何做一个热力图吗?

算法仙:让我给你看一个例子。比如我们有一个关于城市温度的数据集,我们可以用热力图来表示每个城市一周内的温度变化。

热力图
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 假设数据
data = {
    "Monday": [22, 24, 23, 22, 25, 24, 23],
    "Tuesday": [21, 23, 22, 21, 24, 23, 22],
    "Wednesday": [25, 26, 24, 25, 28, 27, 26],
    "Thursday": [23, 24, 23, 22, 25, 24, 23],
    "Friday": [20, 22, 21, 20, 23, 22, 21],
    "Saturday": [19, 21, 20, 19, 22, 21, 20],
    "Sunday": [18, 20, 19, 18, 21, 20, 19]
}

# 转换数据
temperature_df = pd.DataFrame(data)

# 绘制热力图
sns.heatmap(temperature_df, annot=True)
plt.title("Weekly City Temperature")
plt.show()

在这里插入图片描述
代码侠:哇!这图看起来真酷。

算法仙:是吧!热力图非常适合展示这类数据。接下来我们看看对比图, 对比图可以帮助我们比较两组数据之间的差异。

对比图
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# 创建数据
data = {
    'Group A': np.random.randn(100),
    'Group B': np.random.randn(100) + 1
}

# 使用 Seaborn 绘制对比图
sns.histplot(data=data, kde=True)

# 设置坐标轴标签和标题
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Comparison of AB group data')

# 显示图形
plt.show()

在这里插入图片描述

代码侠:这让我更容易理解数据之间的不同关系了!每个图表都像讲述着一个独特的故事。

算法仙:现在,你想不想试试3D图表?虽然需要一点点额外的工作,但效果绝对值得。

代码侠:当然想!你知道我对这些可视化技术总是充满好奇。

算法仙:好的,那我们就用 Matplotlib 工具包来绘制一个3D散点图。比如说,我们有一些关于不同产品的销量、价格和顾客满意度的数据。

3D 图表
import matplotlib.pyplot as plt

# 产品数据
sales = [100, 200, 300, 400, 500]
prices = [20, 30, 40, 50, 60]
satisfaction = [3.5, 4.2, 2.8, 4.5, 4.0]

# 创建3D图表
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制3D散点图
ax.scatter(sales, prices, satisfaction, c='r', marker='o')
ax.set_xlabel('Sales')
ax.set_ylabel('Price')
ax.set_zlabel('Customer Satisfaction')

# 展示图表
plt.title('3D Scatter Plot')
plt.show()

在这里插入图片描述

代码侠:哇,这简直是艺术品!我们能从不同的角度看到数据。

算法仙:没错,3D 图表让我们的分析更加全面。

代码侠:太棒了,这些图表简直是数据可视化的魔法!

算法仙:确实如此。这些高级可视化技术不仅让数据分析更有效,还能让我们的报告更加吸引人。你也可以尝试一下,一旦开始,你就会发现有无限的可能性在等着你。

代码侠:我觉得我已经准备好挑战一个真实项目了。

算法仙:那正好!我们来分析一个真实的数据集,用我们刚学的技巧来可视化它。

实战项目:数据集可视化分析

代码侠和算法仙正在准备一个数据可视化的实战项目,计划使用一个现实数据集进行深入分析。

代码侠:算法仙,我听说我们今天要弄个大东西?

算法仙:没错,代码侠!我们今天要对一个真实的数据集进行可视化分析。

代码侠:哦!那我们要用什么数据集?

算法仙:我们来用著名的泰坦尼克号数据集。首先,我们需要安装 pandas 和 seaborn。

pip install pandas seaborn

算法仙:安装好了之后,我们可以开始导入数据集。

代码侠:就像打开宝箱一样,我迫不及待了!

import seaborn as sns

# 加载数据集
titanic = sns.load_dataset('titanic')

# 查看前几行数据
print(titanic.head())

在这里插入图片描述

算法仙:好的,数据到手了。现在,让我们来看看乘客的生存情况分布。

import seaborn as sns
import matplotlib.pyplot as plt


# 加载数据集
titanic = sns.load_dataset('titanic')

# 绘制生存情况的计数图
sns.countplot(x='survived', data=titanic)
plt.title('Titanic Survivors')
plt.show()

在这里插入图片描述
代码侠:这图表很直观,我们能从性别角度来看看生存情况吗?

算法仙:当然可以,来看看这个:

# 绘制性别和生存情况的对比图
import seaborn as sns
import matplotlib.pyplot as plt


# 加载数据集
titanic = sns.load_dataset('titanic')

# 绘制性别和生存情况的对比图
sns.countplot(x='survived', hue='sex', data=titanic)
plt.title('Survival by Gender on Titanic')
plt.show()

在这里插入图片描述

代码侠:哇,看来女士优先原则在泰坦尼克号上得到了体现。

算法仙:确实如此。现在,让我们深入一点,分析一下年龄对生存的影响。

import seaborn as sns
import matplotlib.pyplot as plt


# 加载数据集
titanic = sns.load_dataset('titanic')

# 年龄和生存情况的分布图
sns.histplot(data=titanic, x='age', hue='survived', kde=True, multiple="stack")
plt.title('Age Distribution of Survivors')
plt.show()

在这里插入图片描述
代码侠:这太棒了!数据可视化真是让数据说话。

算法仙:没错,数据可视化是探索数据和讲述数据故事的强大工具。这只是个开始,还有更多的图表和分析方法等着我们去探索。

代码侠:我已经等不及要开始我们的下一个数据探索之旅了!

这个实战项目通过可视化泰坦尼克号数据集,展示了如何使用 Python 中的 Seaborn 和 Pandas 库来分析和理解数据。通过代码侠和算法仙的对话,我们学到了如何利用不同类型的图表来展示数据集中的不同方面,并发现了一些有趣的模式和趋势。

在这个项目中,我们不仅学习了基础的图表绘制技巧,还探索了数据分析的深层次应用。我们学习了如何通过数据可视化来讲述一个故事,并用图表帮助理解复杂的数据集。

代码侠和算法仙的对话不仅使学习过程更加生动有趣,还帮助我们更好地理解数据可视化的概念和应用。这种以故事情节方式展开的学习方法,让复杂的概念变得更加易于理解和吸收。

通过这个实战项目,我们可以看到数据可视化在数据分析和解释中的重要作用,以及如何用它来揭示数据背后的故事和洞察。

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

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

相关文章

【部署LLaMa到自己的Linux服务器】

部署LLaMa到自己的Linux服务器 1、Llama2 项目获取方法1:有git可以直接克隆到本地方法2:直接下载 2、LLama2 项目部署3、申请Llama2许可4、下载模型权重5、运行 1、Llama2 项目获取 方法1:有git可以直接克隆到本地 创建一个空文件夹然后鼠标…

vscode无法自动补全

前提:安装c/c插件 c/c插件功能非常强大,几乎能满足日常编码过程中常用的功能;因此也包含自动补全的功能,开启方法如下: 文件->首选项->设置: 扩展->c/c->Intellisense,找到Intell…

docker-compose和docker compose的区别

在docker实际使用中,经常会搭配Compose,用来定义和运行多个 Docker 容器。使用时会发现,有时候的指令是docker-compose,有时候是docker compose,下面给出解释。 docker官方文档:https://docs.docker.com/c…

go语言(四)----指针

1、指针的示意图 package mainimport "fmt"func swap(pa *int,pb *int) {var temp inttemp *pa*pa *pb*pb temp}func main() {var a int 10var b int 20swap(&a,&b)fmt.Println("a ",a,"b ",b)}

Lazada不懂英文能做吗?Lazada国内店铺好做吗?-站斧浏览器

Lazada不懂英文可以做吗? Lazada作为一个国际化的电商平台,为了方便用户来自不同国家和地区的购物需求,提供了多语言支持。对于不懂英文的用户来说,他们同样可以在Lazada上进行购物。 首先,Lazada平台上的界面和商品…

TRB 2024论文分享:融合Transformer和自监督学习的长时交通流预测模型

TRB(Transportation Research Board,美国交通研究委员会,简称TRB)会议是交通研究领域知名度最高学术会议之一,近年来的参会人数已经超过了2万名,是参与人数和国家最多的学术盛会。TRB会议几乎涵盖了交通领域…

【管理篇 / 升级】❀ 13. FortiOS 7.4固件升级新规则 ❀ FortiGate 防火墙

【简介】飞塔防火墙的固件升级一直是所有厂家中最好的。只要有注册官方帐号,有注册设备,并且只要有一台设备在服务期内,即可下载所有型号的所有版本的固件。即使其它设备服务期已过,也可以通过固件文件手动升级,避免防…

three.js 点按钮,相机飞行靠近观察设备

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right&quo…

unable to create new native thread 问题处理

目录 unable to create new native thread 问题处理一、背景二、该问题产生可能原因三、处理过程3.1 确认内存是否不足3.2 确认机器线程数达到限制 四、总结 unable to create new native thread 问题处理 一、背景 生产实时集群部分节点的部分任务失败触发自动重启&#xff…

Unity之铰链关节和弹簧组件

《今天闪电侠他回来了&#xff0c;这一次他要拿回属于他的一切》 目录 &#x1f4d5;一、铰链关节组件HingeJoint 1. 实例 2. 铰链关节的坐标属性 ​3.铰链关节的马达属性Motor &#x1f4d5;二、弹簧组件 &#x1f4d5;三、杂谈 一、铰链关节组件HingeJoint 1. 实例 说…

基于Mapbox的Mvt矢量瓦片集成实践

目录 前言 一、数据说明 1、基本数据 2、属性数据 二、Mapbox集成Mvt矢量瓦片 1、关于访问令牌 2、定义html 3、初始地图 4、加载矢量瓦片 5、效果展示 总结 前言 熟悉矢量瓦片的朋友一定知道&#xff0c;在Webgis当中&#xff0c;矢量瓦片的格式除了pbf的格式&#x…

SuperPoint和SuperGlue 的算法介绍及学习应用经验分享

这里写目录标题 I.SuperPoint和SuperGIue的背景介绍特征点提取和匹配特征点的构成基于神经网络的方法优化方向一&#xff1a;增强特征点检测和描述子生成优化方向二&#xff1a;增强匹配和外点去除策略 背景和效果神经网络真的优于传统方案吗&#xff1f;DEMO演示为什么研究 2.…

Servlet系列:两种创建方式(xml,注解)

一、使用web.xml的方式配置&#xff08;Servlet2.5之前使用&#xff09; 在早期版本的Java EE中&#xff0c;可以使用XML配置文件来定义Servlet。在web.xml文件中&#xff0c;可以定义Servlet的名称、类名、初始化参数等。然后&#xff0c;在Java代码中实现Servlet接口&#x…

LeetCode、2336. 无限集中的最小数字(中等,小顶堆)

文章目录 前言LeetCode、2336. 无限集中的最小数字题目链接及类型思路代码题解 前言 博主所有博客文件目录索引&#xff1a;博客目录索引(持续更新) LeetCode、2336. 无限集中的最小数字 题目链接及类型 题目链接&#xff1a;2336. 无限集中的最小数字 类型&#xff1a;数据…

解析HTTP响应的状态码和头部信息

HTTP响应是客户端与服务器之间通信的重要部分。它包含了服务器对客户端请求的回应&#xff0c;以及与该响应相关的各种信息。在HTTP响应中&#xff0c;有两个关键部分&#xff1a;状态码和头部信息。 状态码 状态码是HTTP响应的第一部分&#xff0c;它是一个三位数字的代码&a…

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2

下载源码 cd ~/Downloads/ai git clone --depth1 https://gitee.com/ymcui/Chinese-LLaMA-Alpaca-2 创建venv python3 -m venv venv source venv/bin/activate安装依赖 pip install -r requirements.txt 已安装依赖列表 (venv) yeqiangyeqiang-MS-7B23:~/Downloads/ai/Chi…

CCF认证+蓝桥杯习题训练

贪心 *上取整公式* *代码展示* #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 1e5 10;typedef long long LL;int v[N] , a[N];int main() {int n , d;cin >> n >> d;for(int i 1 ; i < n…

oracle19C之grant语句

官网地址&#xff1a;GRANT 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. 授予 目的 使用GRANT 致赠款声明: 用户和角色的系统权限。 表18-1 列出系统权限(由操作的数据库对象组织)。 注意ANY 例如,系统特权,SEL…

Spring5深入浅出篇:Spring与工厂设计模式简介

Spring5深入浅出篇:Spring与工厂设计模式简介 什么是Spring Spring是⼀个轻量级的JavaEE解决⽅案&#xff0c;整合众多优秀的设计模式轻量级 1. 对于运⾏环境是没有额外要求的开源 tomcat resion jetty收费 weblogic websphere 2. 代码移植性⾼不需要实现额外接⼝JavaEE的解…

java多线程传参数

package com.myThread;public class AdminThread extends Thread{private String name;public void AdminThread(String name){this.name name;}Overridepublic void run() {//线程开始之后执行的代码for (int i 0; i < 100; i) {System.out.print(getName()"线程…