数据可视化升级,5个Python Plotly技巧为数据增色

通过Python Plotly以丰富多彩的方式讲述精彩数据故事。

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

图片

一、简介

图片

在数据科学领域,精心制作的叙述方式对于数据很重要,它能让数据变得易于理解和有趣。

Python的Plotly库是一种在有意义的方式上可视化数据集的强大工具。

以下是关于如何使用Python plotly库以相关、有意义和可视化的方式为数据增色的5个专业技巧。

二、获取和解释数据集

描述:在进行数据可视化之前,了解正在处理的数据集非常重要。

了解数据的结构、内容和背景可以对所讲述的故事产生重大影响。

本指南中使用的数据集是“选举民主指数(Electoral Democracy Index)”,请点击如下链接获取。

【数据集】:https://ourworldindata.org/grapher/democracy-index-polity

该数据集中的字段包括:

  1. 国家:国家或地区的名称。

  2. 代码:ISO 3个字母国家代码。

  3. 年份:记录数据的年份。

  4. 选举民主指数:表示给定年份该实体的选举民主指数的数值。该指数可用于衡量选举中的民主实践水平。

访问数据集:访问此数据集的Python代码可以使用以下代码。

import pandas as pd
# CSV文件的路径
file_path = 'path_to/electoral-democracy-index.csv'
# 加载数据集
data = pd.read_csv(file_path)
# 显示数据帧的前几行,以了解其结构
print(data.head())

代码说明:此代码片段演示了如何使用pandas加载选举民主指数数据集。使用read_csv函数读取CSV文件(确保路径与CSV文件的位置一致),data.head()用于显示数据帧的前几行。

现在,我们已经有了一些相关数据可供使用,接下来要介绍的是使用技巧!

三、使用技巧

3.1 从有趣的叙述开始

每个精彩的数据故事都始于一个有趣的叙述。这种叙述是数据展示的主干,它提供了背景,并以一种相关和有洞察力的方式来构建数据。

import pandas as pd
import plotly.express as px

data = pd.read_csv('electoral-democracy-index.csv')
latest_year_data = data[data['Year'] == max(data['Year'])]

fig = px.choropleth(latest_year_data, locations="Code",
                    color="Electoral democracy index",
                    hover_name="Entity", 
                    color_continuous_scale=px.colors.sequential.Plasma)
fig.show()

代码说明:此代码使用选举民主指数数据集中的最新可用数据生成一个区域地图。它提供了各个国家之间民主水平的视觉表示,便于对民主趋势进行全球分析。

数据可视化:

图片

从CSV文件创建的简单Plotly区域地图

对于以国家为单位表示的定量值,区域地图是提供即时全球可视化比较工具的好方法。

3.2 突出关键见解

数据故事叙述的核心在于突出显示数据中的关键要点。

从定量的角度来看,就是要引导受众的注意力转向你试图从数据中提取的最重要数字。

代码:

countries_of_interest = ['United States', 'Canada', 'Sweden', 'India', 'Brazil']
filtered_data = data[data['Entity'].isin(countries_of_interest)]

fig = px.line(filtered_data, x='Year', y='Electoral democracy index', color='Entity')
fig.show()

代码说明:此折线图可跟踪选定国家的民主指数随时间的变化。通过它可以轻松比较民主趋势,突出显示不同国家在民主治理方面的发展情况。

图片

Plotly折线图展示了5个知名国家民主随时间演变的情况

3.3 使用交互元素

交互式可视化是现代数据故事叙述的核心。它能够吸引观众,让他们以更加亲身参与的方式探索数据。

代码:

top_10_2020 = data[data['Year'] == 2020].nlargest(10, 'Electoral democracy index')
fig = px.bar(top_10_2020, x='Entity', y='Electoral democracy index', color='Electoral democracy index')
fig.show()

代码说明:这个交互式柱状图显示了2020年民主指数排名前十的国家。它允许用户与数据进行交互,从而提供了对民主治理领先国家的另一种视角。

可视化:

图片

交互式的Plotly柱状图显示了2020年民主指数排名前十的国家。

通过将鼠标悬停在可视化图表中的每个柱状图上,用户可以找到所显示的每个国家的更多详细信息。

3.4 利用仪表盘进行复杂叙述

将交互式滑块整合到仪表盘中,让用户可以动态地改变显示的数据。

对于跨度长达数年的数据集,这一点尤其有用,因为它可以让用户观察时间上的趋势和变化。

代码:

import dash
from dash import html, dcc
from dash.dependencies import Input, Output
import plotly.express as px
import pandas as pd

# 加载数据集
data = pd.read_csv('electoral-democracy-index.csv')

# 过滤掉1900年之前的数据并创建一个“Decade”列
data = data[data['Year'] >= 1900]
data['Decade'] = (data['Year'] // 10) * 10

# 初始化Dash应用程序
app = dash.Dash(__name__)

# 定义应用程序的布局
app.layout = html.Div([
    html.H1("Global Electoral Democracy Index by Decade"),
    dcc.Slider(
        id='decade-slider',
        min=data['Decade'].min(),
        max=data['Decade'].max(),
        value=data['Decade'].max(),
        marks={str(decade): str(decade) for decade in data['Decade'].unique()},
        step=None
    ),
    dcc.Graph(id='graph-with-slider')
])

# 定义回调函数来更新图形
@app.callback(
    Output('graph-with-slider', 'figure'),
    [Input('decade-slider', 'value')])
def update_figure(selected_decade):
    filtered_data = data[data.Decade == selected_decade]
    fig = px.choropleth(filtered_data, locations="Code",
                        color="Electoral democracy index",
                        hover_name="Entity",
                        color_continuous_scale=px.colors.sequential.Viridis)
    fig.update_layout(
        title=f'Electoral Democracy Index in the {selected_decade}s',
        geo=dict(showframe=False, showcoastlines=False, projection_type='equirectangular'),
        transition_duration=500
    )
    return fig

# 运行应用程序
if __name__ == '__main__':
    app.run_server(debug=True)

代码说明:这个Dash应用程序包含一个滑块和一个区域地图。滑块设置为允许用户从数据集中选择年份(为便于阅读,按十年为单位设置),当用户移动滑块时,地图会更新显示所选年代的选举民主指数数据。这种动态交互是通过Dash中的回调函数实现的,该函数会监听滑块值的变化,并相应地更新图表。

数据可视化:

图片

带有滑块的Plotly交互式仪表盘,用户可通过滑块选择年份(按十年为单位)

Plotly仪表盘是允许用户进行交互的一种绝妙方式。通过这个例子,用户可以通过点击滑块(按十年为单位),查看选举民主指数随时间的演变(或退化)。

3.5 分享和导出你的故事

讲述数据故事的最后一步是分享你的故事。Plotly能够以各种格式导出可视化结果,使这一步变得轻松无缝。

代码:

fig.write_image("democracy_index.png")  # 保存为图片
fig.write_html("democracy_index.html")  # 保存为交互式HTML

代码说明:这段代码演示了如何将Plotly的可视化结果导出为静态图片和交互式HTML文件,以便于分享和传播数据故事。

四、总结

Python Plotly是一个非常出色的库,可以锤炼在讲述数据故事艺术方面的技能。

从研究选举民主指数数据集到创建相关且有趣的可视化图表,我们亲眼见证了Plotly为现代数据故事讲述者提供了详细的选项和交互功能。

推荐书单

《Python数据分析从入门到精通》

《Python数据分析从入门到精通》全面介绍了使用Python进行数据分析所必需的各项知识。全书共分为14章,包括了解数据分析、搭建Python数据分析环境、Pandas统计分析、Matplotlib可视化数据分析图表、Seaborn可视化数据分析图表、第三方可视化数据分析图表Pyecharts、图解数组计算模块NumPy、数据统计分析案例、机器学习库Scikit-Learn、注册用户分析(MySQL版)、电商销售数据分析与预测、二手房房价分析与预测,以及客户价值分析。

该书所有示例、案例和实战项目都提供源码,另外该书的服务网站提供了模块库、案例库、题库、素材库、答疑服务,力求为读者打造一本“基础入门+应用开发+项目实战”一体化的Python数据分析图书。

《Python数据分析从入门到精通》内容详尽,图文丰富,非常适合作为数据分析人员的学习参考用书,也可作为想拓展数据分析技能的普通职场人员和Python开发人员学习参考用书。

《Python数据分析从入门到精通》icon-default.png?t=N7T8https://item.jd.com/13288736.html

图片

精彩回顾

《Pandas进阶,4个高效的单行代码》

《数据分析进阶,Databricks集成GitHub Copilot实用指南》

《金融量化交易初探,使用Python实现遗传算法》

《严把数据质量关,用Pandas轻松进行7项基本数据检查》

《Pandas进阶指南,掌握这10个基本函数搞定数据处理(下)》

《Pandas进阶指南,掌握这10个基本函数搞定数据处理(上)》

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

访问【IT今日热榜】,发现每日技术热点

  • 25
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值