数据可视化是一种将数据和信息以图形化方式呈现的技术,它通过图表、地图等工具,帮助更有效地发现数据中的趋势、异常值和模式。在大数据时代,数据可视化工具和技术对于处理和分析海量信息、做出数据驱动的决策至关重要。
数据可视化的好处包括加快决策过程、轻松识别隐藏的模式、获取商业洞察、发现错误的信念、使数据讲述更吸引人、帮助非技术背景的人更好地理解数据、识别新趋势等。人类的眼睛对颜色和图案有天生的敏感性,从艺术和手工艺到广告、电视和电影,人类文化本身就是视觉的。
数据可视化可以被描述为另一种艺术形式,它吸引眼球和注意力,并让专注于背后的信息。在查看图表时,可以轻松快速地看到即将到来或正在进行的趋势、异常值等。这种视觉表现帮助更快地消化事实。
如果曾经盯着一个庞大的Excel表格,却无法理解其内容,就会知道数据可视化的效果有多好。今天,将对全球COVID-19数据集进行数据可视化。这个数据集可以在Kaggle上找到,链接如下:
Plotly是一个开源的Python图形库,它生成交互式、出版质量的图表。它的总部位于加拿大魁北克的蒙特利尔,开发在线数据分析和可视化工具。Plotly为个人和公司提供在线图表创建、分析和统计工具,以及Python、R、MATLAB、Perl、Julia、Arduino和REST的科学绘图库。
首先,需要安装chart-studio,以便与Plotly的Chart Studio服务进行交互(包括Chart Studio云和Chart Studio On-Prem)。然后,导入必要的模块和库:
!pip install chart_studio
import pandas as pd
import numpy as np
import chart_studio.plotly as py
import cufflinks as cf
import seaborn as sns
import plotly.express as px
%matplotlib inline
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)
cf.go_offline()
加载国家级别的数据集,并查看数据:
country_wise = pd.read_csv('/kaggle/input/corona-virus-report/country_wise_latest.csv')
print("Country Wise Data shape =",country_wise.shape)
country_wise.head()
接下来,将通过几个不同的图表来可视化各国的死亡人数。由于国家众多,将它们分成不同的图表。
import plotly.graph_objects as go
fig = px.bar(country_wise.head(50), y='Deaths', x='Country/Region', text='Deaths', color='Country/Region')
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig.update_layout(uniformtext_minsize=8)
fig.update_layout(xaxis_tickangle=-45)
fig
继续以同样的方式为接下来的50个国家创建图表,并以此类推。
worldometer = pd.read_csv('/kaggle/input/corona-virus-report/worldometer_data.csv')
worldometer_asia = worldometer[worldometer['Continent'] == 'Asia']
px.pie(worldometer_asia, values='TotalCases', names='Country/Region', title='亚洲大陆人口', color_discrete_sequence=px.colors.sequential.RdBu)
注意:动画无法添加到本文中,但如果编写并运行代码,它将无缝播放。
full_grouped = pd.read_csv('/kaggle/input/corona-virus-report/full_grouped.csv')
# ...(省略部分代码)...
fig = px.bar(df, x="Country/Region", y="Confirmed", color="Country/Region", animation_frame="Date", animation_group="Country/Region", range_y=[0,df['Confirmed'].max() + 100000])
fig.layout.updatemenus[0].buttons[0].args[1]["frame"]["duration"] = 1
fig
fig = go.Figure()
fig.add_trace(go.Box(y=worldometer_asia['TotalCases'], boxpoints='all', name='Asia', fillcolor='blue', jitter=0.5, whiskerwidth=0.2))
fig.add_trace(go.Box(y=worldometer[worldometer['Continent'] == 'Europe']['TotalCases'], boxpoints='all', name='Europe', fillcolor='red', jitter=0.5, whiskerwidth=0.2))
fig.update_layout(title='亚洲与欧洲总病例分布', yaxis=dict(gridcolor='rgb(255, 255, 255)', gridwidth=3), paper_bgcolor='rgb(243, 243, 243)', plot_bgcolor='rgb(243, 243, 243)')
这是Plotly和另一个名为Pycountry的模块的最喜欢的功能之一。可以创建一个交互式全球地图,显示不同地区的冠状病毒死亡人数。强烈建议运行这段代码,看看这个地图是如何工作的。
import pycountry
# ...(省略部分代码)...
fig = px.scatter_geo(worldometer, locations="iso_alpha", color="Continent", hover_name="Country/Region", size="TotalCases", projection="orthographic")
fig