当前位置: 首页 > 后端技术 > Python

28张数据可视化图表总结介绍

时间:2023-03-26 00:47:11 Python

数据可视化本身就是一种通用语言。我们在这里所说的通用语是指它能够向各行各业的人表达信息。它打破了语言和技术理解的障碍。数据是数字和文字的某种组合,但可视化可以显示数据中包含的信息。“数据可视化有助于弥合数字和文字之间的差距”-BrieE.Anderson。有许多无代码/少代码数据可视化工具,如tableau、PowerBI、MicrosoftExcel等。但成为数据科学从业者的最佳工具是python。所以我们在做数据科学项目的时候,一定要注意数据可视化,因为这是最简单的表示信息和洞察数据的方式。所以在这篇文章中,我们将把所有我们能做的数据可视化图表放在一起。如果您是数据科学的初学者,那么本文将最适合您。数据可视化是一种以图形方式表示数据和信息的方法。它可以描述为使用图表、动画、信息图等将数据转换为可以可视化的上下文。它有助于发现数据中的趋势和模式。如果给你一个包含数百行的表格格式的数据集,你会感到困惑。但是适当的数据可视化可以帮助您获得数据中正确的趋势、异常值和模式等。初级数据可视化这里我们总结了9种基本的数据可视化图表,这些是我们日常工作中常用的最简单的图表。频率表频率是对某个值出现的次数的计数。频率表是一种在表中表示频率的方式。表格如下所示。散点图是一种在二维坐标系中绘制两个数值变量的方法。我们可以通过散点图轻松可视化数据分布。LinePlot线图类似于散点图,但点之间用连续的线依次连接。在二维空间中寻找数据流时,折线图更直观。在上图中,您可以看到权重是如何持续变化的。BarChart直方图主要用于表示列中分类变量的频率。条的不同高度表示频率幅度。直方图的概念与条形图的概念相同。在直方图中,分类变量的频率显示在离散条中,而直方图显示连续间隔的频率。它可用于查找区间内连续变量的频率。饼图以圆圈中的百分比表示频率。每个元素根据其频率百分比持有圆的面积。ExplodedPieChart展开饼图与饼图相同。在展开的饼图中,您可以展开饼图的一部分以突出显示元素。DistributionPlot可以显示连续变量的分布。BoxPlot箱线图是一种五数汇总(“最小值”、第一四分位数[Q1]、中位数、第三四分位数[Q3]和“最大值”)以显示数据分布的标准化方法。它可以显示异常值等信息。中级数据可视化中级可视化图表是基本可视化图表的扩展。在这里,我们总结了8个堆积条形图。堆叠条形图是一种特殊的条形图。与传统直方图相比,我们可以在堆叠直方图中整合更多信息[2]。分组条形图名称“分组条形图”的意思是-它是一种特殊类型的条形图,分为不同的组。它主要用于比较两个分类变量。StackedAreaChart堆叠面积图将几个面积系列叠加在一起进行绘制。每个系列的高度由每个数据点中的值决定。ParetoDiagramPareto图包括柱形图和折线图,其中每个值由柱形图按降序表示,直线表示累计总数。圆环图是一个简单的饼图,以圆心为切口。虽然它传达的含义与饼图相同,但它有一些优点:在饼图中,我们经常混淆每个类别共享的区域。由于圆环图去掉了饼图的中心,可以强调读者对饼图外弧的关注,同时内圆也可以用来展示附加信息。热图是一个矩形图,可以分为子矩形,不同的颜色代表不同的值/强度。雷达图是一种以二维图表形式显示多元数据的图形方法,三个或更多变量在从同一点开始的轴上表示。从中心开始的辐条称为半径,代表变量的数值。半径之间的角度不包含任何信息。TreemapRectangularTreemap以嵌套矩形的形式显示分层数据。高级数据可视化这些图表比较复杂,一般情况下可能不常见,但它们对特定任务非常有用。这里总结了10个相关图表ParallelCoordinatePlot因为我们生活在三维空间中,所以一般的可视化最多处理的是3维数据。但有时需要对超过3个维度的数据进行可视化,我们经常使用PCA或t-SNE来降维并绘制它。在降维的情况下,可能会丢失大量信息。而有时我们需要考虑所有的特征,这时就需要平行坐标图。HexagonalBinning六边形分箱图是一种用六边形直观表示二维数值数据点密度的方法。ContourPlot2D等高线密度图是另一种可视化特定区域数据点密度的方法。求两个数值变量的密度很方便。例如,下图显示了每个阴影区域中有多少数据点。QQ-PlotQQ代表分位数-分位数图。这是一种直观地检查数值变量是否服从正态分布的方法。小提琴图和箱线图是相关的。可以从小提琴图获得的另一条信息是密度分布。简单的说就是一个结合了密度分布的箱线图。BoxenPlotBoxenPlot是seaborn库推出的一种新型箱线图。箱形图的箱子是在四分位数处创建的。但在Boxen图中,数据被分成更多的分位数。它可以提供有关数据的更多见解。点图点图包含一个折线图,其中包含一些称为误差线的线。数值变量的集中趋势由上图中所示点的位置表示,误差条表示变量的不确定性(置信区间)。绘制折线图以比较数值变量在不同分类值下的变异性。Swarm图是另一个受“beeswarm”启发的有趣图,我们可以在其中看到不同的分类值如何沿值轴分布。词云在单个云图中,所有词都绘制在特定区域,并突出显示频繁出现的词(以较大的字体。SunburstChart是环形图或饼图的自定义版本,其中集成了一些额外的层次信息图表。地理空间数据可视化地理空间数据可视化关注数据与其物理位置之间的关系。地理空间可视化的独特之处在于它不是大规模的。地理空间可视化叠加变量在地图上,使用纬度和经度显示信息。地图是地理空间可视化的主要焦点。它们的范围从描绘街道、城镇、公园或分区到显示国家、大陆或整个星球的边界。它们充当附加数据容器的存储库。它们可以帮助识别问题,跟踪变化,了解趋势,并进行与特定地点和时间相关的预测。所以这里有一些python库地理空间数据表格可视化工具,powerb.i.,ArcGIS,QGIS等,可用于复杂的地理空间数据可视化。python中也有很多库也非常适合地理空间数据可视化,比如GeoplotFoliumGeopandasPySALrworldmaprworldxtraetc。我将使用Folium来展示一些可视化的实现。这里我使用了HIFLD的医院数据集,其中包含医院的位置和其他医院信息。根据授权信息,可以公开展示这些数据。主数据集中有34个特征。出于演示目的,我将使用特征“ADDRESS”、“STATE”、“TYPE”、“STATUS”、“POPULATION”、“LATITUDE”、“LONGITUDE”。其中“LATITUDE”和“LONGITUDE”将用于确定医院在地图上的位置,而其他列如STATE、TYPE和STATUS用于过滤,最后ADDRESS和POPULATION作为标记在地图上的元数据自定义地图。绘制基本地图导入绘制地图所需的库。importpandasaspdimportfoliumfromfolium.pluginsimportMarkerCluster加载数据集。hosp_df=pd.read_csv('/work/Hospitals.csv')过滤数据。WORKING_COLS=["ADDRESS","STATE","TYPE","STATUS","POPULATION","LATITUDE","LONGITUDE"]STATE="CA"hosp_df=hosp_df.loc[hosp_df["STATE"]==STATE,WORKING_COLS]hosp_df.head(5)一些数据预处理。hosp_df=hosp_df[hosp_df["POPULATION"]>=0]hosp_df.describe()绘制地图Folium提供的.Map()将位置参数作为包含一对经纬度的列表并生成地图,自动生成的地图将以数据为中心。m=folium.Map(location=[hosp_df["LATITUDE"].mean(),hosp_df["LONGITUDE"].mean()],zoom_start=6)m图中的三角点是我们包含的数据点数据集添加图层Folium中的默认地图是OpenStreetMap。我们可以添加不同的图层,如StamenTerrain、StamenWaterColor、CartoDBPositron等,以获得不同的图层表示。使用folium.TileLayer将多个图层添加到单个地图,并使用folium.LayerControl进行交互切换。m=folium.Map(location=[hosp_df["纬度"].mean(),hosp_df["经度"].mean()],zoom_start=6)folium.TileLayer('cartodbdark_matter').add_to(m)folium.TileLayer('cartodbpositron').add_to(m)folium.TileLayer('StamenTerrain').add_to(m)folium.TileLayer('StamenToner').add_to(m)folium.TileLayer('StamenWaterColor').add_to(m)folium.LayerControl().add_to(m)m可以看到右上角出现了图层选择的按钮生成地图标记在交互式地图中,标记对于指定位置非常重要。folium.Marker可以在给定位置创建一个标记m=folium.Map(location=[hosp_df["LATITUDE"].mean(),hosp_df["LONGITUDE"].mean()],zoom_start=8)hosp_df.apply(lambdarow:folium.Marker(location=[row['LATITUDE'],row['LONGITUDE']]).add_to(m),axis=1)m自定义标记也可以使用自定义标记m=folium。Map(location=[hosp_df['LATITUDE'].mean(),hosp_df['LONGITUDE'].mean()],zoom_start=8)defget_icon(status):如果status=="OPEN":返回folium.Icon(icon='heart',color='black',icon_color='#2ecc71')else:returnfolium.Icon(icon='glyphicon-off',color='red')hosp_df.apply(lambdarow:folium.Marker(location=[row['LATITUDE'],row['LONGITUDE']],#color='red',popup=row['ADDRESS'],tooltip='

点击这里获取更多信息
',icon=get_icon(row['STATUS']),.add_to(m),axis=1)m生成气泡图表示地面图表上的值,我们可以通过将圆半径绑定到它在数据集中的值来绘制不同大小的圆。在我们的例子中,我们用与其人口值成比例的半径表示每个中心覆盖的人口。m=folium.Map(location=[hosp_df['LATITUDE'].mean(),hosp_df['LONGITUDE'].mean()],zoom_start=8)defget_radius(pop):返回int(pop/20)hosp_df.apply(lambdarow:folium.CircleMarker(location=[row['LATITUDE'],row['LONGITUDE']],radius=get_radius(row['POPULATION']),popup=row['ADDRESS'],工具提示='
点击此处获取更多信息
',stroke=True,weight=1,color="#3186cc",fill=True,fill_color="#3186cc",opacity=0.9,fill_opacity=0.25,).add_to(m),axis=1)m生成标记簇在处理具有密集数据点的地图时,使用标记簇可以避免许多附近的标记相互重叠而造成的混淆。Folium提供了一种简单的方法来设置标记簇,方法是将它们添加到folium.plugins.MarkerCluster实例m=folium.Map(location=[hosp_df['LATITUDE'].mean(),hosp_df['LONGITUDE'].mean()],zoom_start=8)cluster=MarkerCluster(name="Hospitals")defget_icon(status):如果status=="OPEN":returnfolium.Icon(icon='heart',color='black',icon_color='#2ecc71')else:returnfolium.Icon(icon='glyphicon-off',color='red')hosp_df.apply(lambdarow:folium.Marker(location=[row['LATITUDE'],row['经度']],popup=row['ADDRESS'],tooltip='
点击这里获取更多信息
',icon=get_icon(row['STATUS']),).add_to(cluster),axis=1)cluster.add_to(m)m当鼠标悬停在标记上时,它会显示集群覆盖区域的边界。可以通过将showCoverageOnHover选项设置为false来取消此默认行为,如下所示cluster=MarkerCluster(name="Hospitals",options={"showCoverageOnHover":False})对你有很大的帮助。我在本文中汇总了基本上所有图表的概览。这将是一篇关于数据可视化的完整文章,特别是展示了一些地理定位可视化的方法,希望本文对您有所帮助。https://avoid.overfit.cn/post/93e1e9cadcb84b13bf6a44b981a41843byMd.Zubair