Python数据可视化小结_python数据可视化心得体会-程序员宅基地

技术标签: python  数据分析  数据可视化  Python  

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. 总结

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

您学废了嘛?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sgzqc/article/details/130784147

智能推荐

基于Java在线电影票购买系统设计实现(源码+lw+部署文档+讲解等)-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏4次。社会和科技的不断进步带来更便利的生活,计算机技术也越来越平民化。二十一世纪是数据时代,各种信息经过统计分析都可以得到想要的结果,所以也可以更好的为人们工作、生活服务。电影是生活娱乐的一部分,特别对喜欢看电影的用户来说是非常重要的事情。把计算机技术和影院售票相结合可以更符合现代、用户的要求,实现更为方便的购买电影票的方式。本基于Java Web的在线电影票购买系统采用Java语言和Vue技术,框架采用SSM,搭配MySQL数据库,运行在Idea里。

集合的addAll方法--list.addAll(null)会报错--java.lang.NullPointerException-程序员宅基地

文章浏览阅读1.8k次。Exception in thread "main" java.lang.NullPointerException at java.util.ArrayList.addAll(ArrayList.java:559) at com.iflytek.epdcloud.recruit.utils.quartz.Acool.main(Acool.java:16)import java.u..._addall(null)

java获取当天0点到24点的时间戳,获得当前分钟开始结束时间戳_java 获取某分钟的起止时间戳-程序员宅基地

文章浏览阅读4.5k次。public static void main(String[] args) { Calendar todayStart = Calendar.getInstance(); todayStart.set(Calendar.HOUR_OF_DAY, 0); todayStart.set(Calendar.MINUTE, 0); toda..._java 获取某分钟的起止时间戳

北京内推 | 京东AI研究院计算机视觉实验室招聘三维视觉算法研究型实习生-程序员宅基地

文章浏览阅读1.1k次。合适的工作难找?最新的招聘信息也不知道?AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职!京东 AI 研究院京东 AI 研究院(https://air.jd..._京东计算机视觉实验室

Ubuntu18.04安装配置Qt5.15_ubuntu安装qt5.15-程序员宅基地

文章浏览阅读2.1k次。Ubuntu18.04安装配置Qt5.15 Ubuntu18.04安装配置Qt5.15 Qt选择下载Qt安装Qt5.15.0配置后记 Qt选择 在官方的声明中,Qt5.15是Qt5.x的最后一个LTS版本,增加了即将在2020年底推出的Qt6的部分新特性,为了之后的新_ubuntu安装qt5.15

针对Error: You must either define the environment variable DJANGO_SETTINGS_MODULE ...问题的解决_project structure->facets->django->-程序员宅基地

文章浏览阅读1.8w次,点赞5次,收藏3次。针对Error: You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings问题的解决使用intelliJ Idea开发django项目,启动 manage.py 测试时,会出现如上所示问题。根据提示,有两种解_project structure->facets->django->

随便推点

vue项目运行报错:94% asset optimization ERROR Failed to compile with 2 errors13:03:01 error in ./src/ba-程序员宅基地

文章浏览阅读6.7k次。使用vue编写的前端项目运行报错:88% hashing 89% module assets processing 90% chunk assets processing 94% asset optimization ERROR Failed to compile with 2 errors13:03:01 error in ./src/base/components/head..._94% asset optimization

适用于 Linux 的 Windows 子系统安装指南 (Windows 10) (微软官方文档)_hyper-v-vmms 虚拟硬盘文件必须是未压缩和未加密的文件,并且不能是稀疏文件。-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏3次。官方原文档微软官方教程地址:传送门安装适用于 Linux 的 Windows 子系统必须先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发版。以管理员身份打开 PowerShell 并运行:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart安装所选的 Linux 分发版打开 Micro_hyper-v-vmms 虚拟硬盘文件必须是未压缩和未加密的文件,并且不能是稀疏文件。

rufus 一款好用的linux u盘,光盘刻录工具_rufus可以刻录光盘吗-程序员宅基地

文章浏览阅读2.2k次。rufus 一款好用的linux u盘,光盘刻录工具:下载(点击普通下载中的“立即下载”): http://share.cnop.net/file/1806028-401886318_rufus可以刻录光盘吗

用VB.net实现对.ini文件的读写操作的类-程序员宅基地

文章浏览阅读142次。Option Explicit OnModule INI 'INICont.bas Ver 1.0+a INI '==================================================================== 'GetIntFromINI( sectionName , keyName , defaultValue, iniPath ) '..._vb.net 读取ini文件 int

linux集群—负载均衡集群LBC_lbc在程序中是什么-程序员宅基地

文章浏览阅读615次。1 集群的定义集群的出现主要是为了解决单台设备性能不足、效率低下等问题,可以保证业务无中断,总体效率高,适合大型业务。2 集群的分类3 负载均衡集群LBC_lbc在程序中是什么

【渝粤题库】陕西师范大学200161 文字学概论 作业_十小羊未哪一个不是象形字-程序员宅基地

文章浏览阅读3k次。《文字学概论》作业一、单选题1、原始社会陶器上的图形符号刻划是以( )为代表的。A 仰韶文化 B 马家窑文化 C 良渚文化 D 大汶口文化2、下列各字中不属于象形字的是( )。A十 B小 C羊 D未3、“画成弃物 ,随体诘屈”,是许慎给六书当中的( )所下的定义。A 象形 B 指事 C 假借 D 会意4、下列各字当中形旁为"肉”的是( )。A 肌 B 明 C 钥 D 腾5、“夫” 字是在“大”字之上加一横而成的,这_十小羊未哪一个不是象形字

推荐文章

热门文章

相关标签