Python数据可视化小结

news2024/11/18 3:34:02

1. 引言

原始形式的数据对大多数人来说可能都是枯燥乏味的,但是如果掌握正确的可视化工具,给人的印象就会变得引人入胜。本文通过实际例子,让我们利用数据可视化工具来探索不一样的数据体验。

闲话少说,我们直接开始吧!

2. 举个栗子

让我们从创建一个数据集开始,假设以下数据集包含2010-2020年 Newport市的碳排放、空气质量指数、绿化率、平均温度和降雨量等信息。

Year,AQI,Carbon_Emissions,Green_Space_Ratio,Rainfall,Temperature
2010,70,7.3,25.0,50,55
2011,72,7.5,25.5,47,57
2012,75,7.7,26.0,45,58
2013,77,7.9,26.5,44,58
2014,79,8.1,27.0,43,59
2015,80,8.3,27.5,42,60
2016,82,8.5,28.0,41,61
2017,85,8.7,28.5,40,62
2018,87,8.9,29.0,39,63
2019,90,9.1,29.5,38,64
2020,92,9.3,30.0,37,65

该数据集展示了 Newport市各种环境因素如何随时间发生变化的原始数据。我们可以直观地看到十多年间该市的碳排放、空气质量、绿化率和平均温度的趋势。最后,我们可以通过可视化工具,来将所有这些因素结合在一起展示出来。

3. 了解受众

了解受众是有效讲述数据的关键。让我们想象一下,我们的听众是一群环境政策制定者。他们对环境因素随时间的变化颇感兴趣,所以我们需要以突出这些趋势的方式呈现我们的数据。

对于我们的第一个可视化,我们不妨来创建一个折线图,显示 Newport市(本例中的虚构城市)多年来空气质量指数(AQI)的变化。折线图是显示一段时间内趋势的绝佳选择,而且很容易被广大观众所理解。

import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots

# Load the data
df = pd.read_csv('environment_data.csv')

# Create a line chart of AQI over the years
fig1 = go.Figure()
fig1.add_trace(go.Scatter(x=df['Year'], y=df['AQI'], mode='lines', name='AQI', line=dict(color='red')))
fig1.update_layout(title='Newport - Air Quality Index Over Time', xaxis_title='Year', yaxis_title='Air Quality Index (AQI)')
fig1.show()

运行结果如下:
在这里插入图片描述
上图中我们将每年的空气质量指数进行了可视化,强调它是如何随着时间的推移而变化的。简单的图表,但有效——我们可以清楚地看到,表现的情况是污染逐年增加。

4. 使用正确的可视化

不同类型的可视化服务于不同的目的。对于我们的第二个可视化,使用技巧1中相同库和CSV文件,让我们创建一个散点图来显示碳排放和空气质量指数(AQI)之间的关系。

# Create a scatter plot of Carbon Emissions vs AQI
fig2 = go.Figure()
fig2.add_trace(go.Scatter(x=df['Carbon_Emissions'], y=df['AQI'], mode='markers', name='Carbon Emissions vs AQI', marker=dict(color='red')))
fig2.update_layout(title='Newport - Carbon Emissions vs Air Quality Index', xaxis_title='Carbon Emissions (million metric tons)', yaxis_title='Air Quality Index (AQI)')
fig2.show()

使用散点图可以使我们能够研究碳排放和空气质量之间是否存在可能的相关性,为决策者提供有价值的决策见解。运行结果如下:
在这里插入图片描述
在这个例子中,可视化显示了两者之间的线性递增关系,所以极大可能二者存在一定的因果关系。

5. 突出显示重点

我们的第三个可视化将是一个条形图,显示多年来绿化比例的变化。这可以突显城市规划和发展政策对绿化的影响。使用提示1中的相同库和CSV文件,条形图代码如下:

# Create a bar chart of Green Space Ratio over the years
fig3 = go.Figure()
fig3.add_trace(go.Bar(x=df['Year'], y=df['Green_Space_Ratio'], name='Green Space Ratio', marker=dict(color='green')))
fig3.update_layout(title='Newport - Green Space Ratio Over Time', xaxis_title='Year', yaxis_title='Green Space Ratio (%)')
fig3.show()

结果如下:
在这里插入图片描述
这张条形图强调了绿化率多年来的增长,这是对城市可持续性感兴趣的政策制定者的一个重要观点。

6. 用数据讲故事

对于我们的最终可视化,我们将创建一个面积图,以显示多年来平均温度和降雨量的变化。这可以深入了解 Newport市潜在的气候变化影响。使用提示1中的相同库和CSV文件,面积图代码:

# Create a stacked area chart of Average Temperature and Rainfall over the years

fig4 = make_subplots(specs=[[{"secondary_y": True}]])
fig4.add_trace(go.Scatter(x=df['Year'], y=df['Temperature'], mode='lines', name='Temperature', stackgroup='one'), secondary_y=False)
fig4.add_trace(go.Scatter(x=df['Year'], y=df['Rainfall'], mode='lines', name='Rainfall', stackgroup='one'), secondary_y=True)
fig4.update_layout(title='Newport - Temperature and Rainfall Over Time', xaxis_title='Year', yaxis_title='Temperature (°F) / Rainfall (inches)')
fig4.show()

这张叠加面积图显示了两个因素随时间变化的变量,使我们能够看到潜在的相关性和趋势。
在这里插入图片描述
在这种情况下,这些数据告诉我们一个非常清楚的故事,即多年来温度和降雨量是如何同时变化的。一个温度在随时间上升的同时,降雨量却在随时间而下降。

7. 图形可视化仪表板

现在我们已经有了所有的可视化,接着让我们使用Python中的Dash库将它们合并到一个单独的面板中。

import dash
from dash import dcc
from dash import html

# Load the data
df = pd.read_csv('environment_data.csv')

#put all of our chart code here (fig1, fig2, fig3, fig4), remove ALL show() statements

app = dash.Dash(__name__)
app.layout = html.Div([
    html.H1('New York City Environmental Data Dashboard'),
    
    html.Div([
        dcc.Graph(figure=fig1),
        dcc.Graph(figure=fig2),
    ], style={'display': 'flex'}),
    
    html.Div([
        dcc.Graph(figure=fig3),
        dcc.Graph(figure=fig4),
    ], style={'display': 'flex'}),
])
if __name__ == '__main__':
    app.run_server(debug=True)

在这段代码中,我们主要使用了Dash库,一个用于构建分析web应用程序的Python框架,我们可以来创建一个包含四个可视化的仪表板。将其排列成两行,每行有两个子图。如下:
在这里插入图片描述

超级棒并且超级容易实现, 本文从我们的简单数据集中告诉我们4个有用且引人注目的可视化效果,所有这些都显示在一个易于访问的仪表板中!

8. 总结

通过数据可视化工具来取得引人注目的效果。这是关于了解数据背后隐藏的信息,通过了解受众,并不断接收和实施反馈,以不断改进可视化效果。本文一步一步通过具体数据例子来讲解了如何取得引入注目的可视化效果的完整步骤,并给出了相应的代码示例。

您学废了嘛?

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

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

相关文章

推荐3款超好用的海报设计软件!

在现代社会,海报设计已经成为了一种非常重要的视觉传达方式。如果你需要制作一个引人注目的海报,但却没有设计师的技能和经验,那么在线海报设计图片软件就是你的最佳选择。下面我们将介绍 5 款最受欢迎的在线海报设计图片软件,它们…

qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)

在qt开发过程中可能要导入自定义格式的图层地图,那么可以把这些数据导入qgis然后导出为shp格式文件,然后下载qgis源码,在qt项目中配置环境变量导入qgis有关的头文件,然后再引入shp数据格式的地图。 qgis处理数据 QGIS安装 QGIS…

oracle数据库当中用户的创建,添加,授权,以及表的创建与表的简单介绍,以及在oracle数据库当中的约束以及约束条件的简单介绍

系列文章目录 (3条消息) oracle数据库简介 文章目录 系列文章目录 前言 一、用户的创建 1.1、创建命令 1.2、给予scott用户权限 1.3、以scott用户进行连接登录 二、表和表的设计原则 2.1、表的概念 2.1.1、表是从属于用户的 2.1.2、表是逻辑表(概念表),不…

[比赛简介]Predict Student Performance from Game Play

比赛链接:https://www.kaggle.com/competitions/predict-student-performance-from-game-play/overview 比赛简介 本次比赛的目标是实时预测学生在基于游戏的学习中的表现。您将开发一个在最大的游戏日志开放数据集之一上训练的模型。 您的工作将有助于推进对基于…

Next.js ---未完待续....

Next.js 1.介绍2.体会服务器端渲染2.1为什么这就服务器端渲染了? 3.如何判断是否是服务器端渲染?--- 响应头信息4.文件名路由5.如何启动项目*另外1.Next.js 是基于 Webpack 的框架?1.1所以无需手动编译 TypeScript 代码 1.介绍 Next.js 是一…

【C++】C++泛型编程 | 模板初阶

🧑‍🎓个人主页:简 料 🏆所属专栏:C 🏆个人社区:越努力越幸运社区 🏆简 介:简料简料,简单有料~在校大学生一枚,专注C/C/GO的干货分…

LT8711UXE1,Type-C/DP1.2 转 HDMI2.0,内置HDCP,支持4k 60Hz向下兼容

1. 描述 LT8711UXE1 是一款高性能 Type-C/DP1.2 至 HDMI2.0 转换器,设计用于将 USB Type-C 源或 DP1.2 源连接到 HDMI2.0 接收器。LT8711UXE1 集成了一个符合 DP1.2 标准的接收器和一个符合 HDMI2.0 标准的发射器。此外,还包括两个用于 CC 通信的 CC 控…

研发/IT工程师双视角测评8大仿真平台,结果……

上一篇,我们围绕着亿万研发工程师的梦想,考察了市面上几乎所有类型的工业仿真平台,深度评测了他们本质究竟是什么,适用场景有哪些,分别能给研发和IT工程师们减轻多少工作量。 据此,我们搭建了一个工业仿真…

C++/PTA 神坛

C/PTA 神坛 题目要求解题前提及思路凹包算法概念步骤 解题思路 代码tan(y/x)及tan2(y,x)函数 总结 题目要求 在古老的迈瑞城,巍然屹立着 n 块神石。长老们商议,选取 3 块神石围成一个神坛。因为神坛的能量强度与它的面积成反比,因此神坛的面…

记录:自回归 模型在记忆 全随机序列 的潜变量 统计量爆炸现象

只是一个记录 8层12头512维度的 GPT 模型,使用它来记忆 10000 条 512长度 的无序序列,vocab_size 为100。 模型要自回归生成这些序列,不可能依赖局部推理,必须依赖全局视野,即记住前面的序列。 然后统计 最后一个no…

HF宣布在transformers库中引入首个RNN模型:RWKV,一个结合了RNN与Transformer双重优点的模型

RWKV是一个结合了RNN与Transformer双重优点的模型架构。由香港大学物理系毕业的彭博首次提出。简单来说,RWKV是一个RNN架构的模型,但是可以像transformer一样高效训练。今天,HuggingFace官方宣布在transformers库中首次引入RNN这样的模型&…

QGC局域网内连接PX4模拟器JMAVSim

环境 QGroundControl 开源地面站系统; 代码地址: https://github.com/mavlink/qgroundcontrolPX4 开源飞控系统; 代码地址: https://github.com/PX4/PX4-Autopilot QGC可以直接下载运行包. PX4 请根据代码中的说明,进行环境的配置和运行. 通过代码去build地面站和PX4的步骤见官…

【Linux 之五】 Linux中使用fdisk命令实现磁盘分区

最近由于工作的需要,初步研究了uboot中的fastboot实现方式。研究fastboot不可避免的需要了解磁盘分区的相关知识点,在linux下可以使用fdisk命令实现磁盘的分区。好了,下面步入正题。 1. 查看帮助信息(fdisk --help) …

计算机网络 - 传输层

Transport-Layer Services Transport layer, 传输层主要是完成进程(proces)到进程(process)之间的通讯的. 在传输层之下的IP协议, 提供的是best-effort的传输, 也就是对信息的正确性没有保证, 也就是IP的协议是unreliable的, TCP的协议是在IP协议至少提供可靠的数据传输. UDP…

Word批量更改图片环绕方式与=尺寸大小

前提:一份Word文档里面有100张图片,有大有小,需要将100张图片更改为统一大小,宽度与高度均为5厘米,同时环绕方式也需要改成四周型。 默认Word图片的默认环绕方式为嵌入型,需要统一更改为四周型,…

多元时间序列 | RBF径向基神经网络多变量时间序列预测(Matlab完整程序)

多元时间序列 | RBF径向基神经网络多变量时间序列预测(Matlab完整程序) 目录 多元时间序列 | RBF径向基神经网络多变量时间序列预测(Matlab完整程序)预测结果评价指标基本介绍程序设计参考资料预测结果 评价指标 训练集数据的R2为:0.99805 测试集数据的R2为:0.98351 训练…

二叉树最大宽度_深度优先方式_20230520

二叉树最大宽度_深度优先方式_20230520 前言 给定一颗二叉树,求解其最大宽度。定义每层宽度为该层最左和最右之间的长度,也即左右两个端点之间的所跨越的长度,两个端点直接可能会包含一些延伸到本层的空节点,这些空节点的长度由…

【小沐学NLP】Python实现聊天机器人(OpenAI,模型概述笔记)

🍺NLP开发系列相关文章编写如下🍺:1🎈【小沐学NLP】Python实现词云图🎈2🎈【小沐学NLP】Python实现图片文字识别🎈3🎈【小沐学NLP】Python实现中文、英文分词🎈4&#x1…

Springcloud1----->Hystrix

目录 雪崩问题服务降级原理实践order降级处理user降级处理 服务熔断原理实践 hystrix,英文意思是豪猪,全是是刺,一种保护机制,即熔断器。 主页:https://github.com/Netflix/Hystrix/ 雪崩问题 在微服务中,…