首页 > 编程语言 >Python数据可视化小结

Python数据可视化小结

时间:2023-05-20 19:35:33浏览次数:40  
标签:title Python AQI df 可视化 go Newport 小结

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()

运行结果如下:

Python数据可视化小结_数据可视化

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

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()

使用散点图可以使我们能够研究碳排放和空气质量之间是否存在可能的相关性,为决策者提供有价值的决策见解。运行结果如下:

Python数据可视化小结_数据分析_02

在这个例子中,可视化显示了两者之间的线性递增关系,所以极大可能二者存在一定的因果关系。

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()

结果如下:

Python数据可视化小结_数据分析_03

这张条形图强调了绿化率多年来的增长,这是对城市可持续性感兴趣的政策制定者的一个重要观点。

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()

这张叠加面积图显示了两个因素随时间变化的变量,使我们能够看到潜在的相关性和趋势。

Python数据可视化小结_数据可视化_04

在这种情况下,这些数据告诉我们一个非常清楚的故事,即多年来温度和降雨量是如何同时变化的。一个温度在随时间上升的同时,降雨量却在随时间而下降。

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框架,我们可以来创建一个包含四个可视化的仪表板。将其排列成两行,每行有两个子图。如下:

Python数据可视化小结_数据可视化_05

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

8. 总结

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

您学废了嘛?

标签:title,Python,AQI,df,可视化,go,Newport,小结
From: https://blog.51cto.com/u_15506603/6317710

相关文章

  • Python自动化运维
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运......
  • Python自动化
    3-20数据类型转换数据类型转换:   1.int(x):x代指对象,返回值是一个整数类型,对象->整数       x为字符串:字符串应全为整数       x为小数:只保留整数部分       x不能是负数       x为布尔类型:True=1False=0   2.float(x):x......
  • Python学习
    3-13字符串类型字符串类型:str   1.定义格式:       变量='内容'           打印一行       变量="内容"           打印一行       变量='''内容'''或者三引号           可以通过回车的方式换行,且打印出......
  • Python学习
    3-13字符串类型字符串类型:str   1.定义格式:       变量='内容'           打印一行       变量="内容"           打印一行       变量='''内容'''或者三引号           可以通过回车的方式换行,......
  • python内存管理机制
    1:引用计数机制实现垃圾回收对象引用一次,引用计数就增加1,销毁计数就减少1,当引用计数为零时,从内存中删除对象。还有一种情况,ab两对象互相引用时,del语句可以减少引用计数,但不会归零。会导致内存泄漏,解释器会定期执行一个循环检测,搜索不可访问对象的循环,并删除他们2:内存池机制为了......
  • Python编写输出斐波那契数列的前n项
    以下是一个使用Python编写的程序代码,可以计算并输出斐波那契数列的前n项(n由用户输入):n=int(input("请输入斐波那契数列的项数:"))a,b=0,1foriinrange(n):print(b,end="")a,b=b,a+b代码解释:用户输入斐波那契数列的项数n,并使用int()函数将输入的字符串......
  • 搭建python接口自动化框架
    1.最近一年接触Java接口自动化较多,倒是忘记了一些python,重拾记忆目录展示:(1)allure相关文件是集成到了插件,运行时,设置了路径之后自动创建的(2)business文件下则是业务处理脚本,可以创建app,小程序,web端的自动化脚本编写(3)common文件则是处理业务工具类,读取配置文件,excel......
  • Python接口MongoDB实现接口查询数据库功能
    一、所需工具Python,pymongo,Mongodb,Flask二、安装1、安装Python我这里安装的是 3.8.0版本,输入python-V可以查看当前版本    2、安装pymongo命令行中输入  pip3installpymongo 命令执行即可完成安装。3、服务器安装Mongodb环境:linux系......
  • python中常见的字符串格式化方法
    1.使用%符号进行字符串格式化使用%符号是一种较为传统的字符串格式化方法。它通过将占位符%s插入到字符串中,再使用%运算符将具体的值插入到这些占位符中。例如:name="Alice"age=20height=175print("Mynameis%s,I'm%dyearsold,andmyheightis%.2f."......
  • Python request请求 解析
    importloggingimporthttp.clienthttpclient_logger=logging.getLogger("http.client")defhttpclient_logging_patch(level=logging.DEBUG):"""EnableHTTPConnectiondebugloggingtotheloggingframework"""......