数据可视化与机器学习:动态条形图

在当今世界,数字技术是许多行业不可或缺的一部分,尤其是机器学习和人工智能。随着数字化时代的到来,对数字技术的理解好奇心不断增强。作为数据科学家,深知机器学习在数据分析领域的重要性,它帮助预测数据的发生并计算大量数据。

解决问题的方法之一是通过问题的可视化,即首先对问题进行可视化,从其中获取观察结果,然后得出结论。在机器学习中,同样首先对大量数据进行可视化,然后从中获取观察结果。希望探索机器学习以及将其与数据可视化集成的好处。

数据可视化是一种技术,它使用一系列静态和动态的视觉效果,在特定上下文中帮助人们更好地理解数据。数据以一组格式显示,以可视化模式。

如果阅读关于最流行数据可视化技术的文章,会使用在Python中开发的bar_chart_race技术。但它们为什么这么受欢迎?条形图受欢迎的主要原因是其简单性以及如何容易解释可视化。

动态条形图

动态条形图基本上是从普通条形图随时间演变而来。因此,可以将动态条形图视为时间序列条形图。

动态条形图是流行的动画条形图,但有一个非常好的Pythonbar_chart_race,基于Matplotlib,使其更简单、更容易制作动画条形图。

要安装bar_chart_race,需要打开命令提示符或使用Windows PowerShell,并执行以下代码:

pip install bar_chart_race

或者

conda install -c conda-forge bar_chart_race

通常,使用自定义数据集来解决问题,其中有许多错误、空值和其他会降低准确性的东西,因此需要将数据转换为正确的格式。

需要将数据转换为宽格式,其中行代表时间段,每列包含类别的值,并使用时间组件作为索引。

为了创建动画条形图,使用了population_by_country_2020数据集,它将包含2020年人口最多的国家信息。

年份:人口变化的年份 国家(或地区):国家名称 人口(2020年):2020年各国人口 年度变化:年度人口变化百分比数据 净变化:人口净变化 密度:人口密度 土地面积:按人口增加的土地面积 移民:全球移民 中位年龄:取决于人口的年龄 城市人口百分比: 国家全球排名:

import pandas as pd import bar_chart_race

现在知道正确格式化的数据看起来如何,让开始处理数据。但首先,让加载数据并看看它是什么样子。

下载数据集后,下一步是读取数据集。通常,用于问题的数据集以逗号分隔值(CSV)的形式存在,将使用pandas库来读取CSV文件:

df = pd.read_csv('countries_population_from1995_to_2020.csv')

可以看到数据集中有4195行和14列。

现在,处理数据,因为它的格式不好。必须从不需要的列中删除一些列。

所需列:

  • 年份
  • 国家
  • 人口

这些3列在观察期间最为重要,使用pandas删除其余列:

population = df.drop(columns=['Yearly % Change', 'Yearly Change', 'Migrants (net)', 'Median Age', 'Fertility Rate', 'Density (P/Km²)', 'Urban Pop %', 'Urban Population', 'Country's Share of World Pop %', 'World Population', 'Country Global Rank'], axis=1)

当显示新的数据框后,看起来像这样:

population

现在,必须创建新数据框的透视表:

df2 = population.pivot_table('Population',['Year'],'Country').head()

这里考虑,值=人口,索引=年份,列=国家。现在,数据已经准备好创建人口的动态条形图了。

在这一步中,使用Python模块bar_chart_race,让看看下面:

bar_chart_race.bar_chart_race(df2)

在函数bar_chart_module()中,有很多参数,通过这些参数可以自定义条形图的观察结果:

让看看参数列表:

bar_chart_race(df = df2, filename=None, orientation='h', sort='desc', n_bars=10, fixed_order=False, fixed_max=True, steps_per_period=10, interpolate_period=False, label_bars=True, bar_size=.90, period_label={'x': .99, 'y': .25, 'ha': 'right', 'va':'center'}, period_summary_func=lambda v, r: {'x': .99, 'y': .18, 's': f'Population {v.nlargest(39).sum():,.0f}', 'ha': 'right', 'size': 8, 'family': 'Courier New'}, period_length=500, figsize=(6.5,5), dpi=144, cmap='dark12', title='Population by Country', title_size='', bar_label_size=7, tick_label_size=5, shared_fontdict={'family' : 'Helvetica','color' : '.1'}, scale='linear', writer=None, fig=None, bar_kwargs={'alpha': .7}, filter_column_colors=True)

这里只传递数据框作为参数,大多数参数都是默认设置,不需要做任何更改。如果想更改特定参数,可以。

所以,这是countries_population_from1995_to_2020的动态条形图可视化。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485