Cet article vous présente une introduction à quatre méthodes de visualisation de données en Python (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin pourront s'y référer.
Résumé : Cet article décrit quatre méthodes de visualisation de données Python : carte thermique, carte de densité bidimensionnelle, carte en araignée et carte arborescente.
La visualisation des données est une partie importante de tout projet de science des données ou d'apprentissage automatique. Les gens commencent souvent par une analyse exploratoire des données (EDA) pour mieux comprendre leurs données, et la création de visualisations peut vraiment aider à rendre les problèmes plus clairs et plus faciles à comprendre, en particulier pour les ensembles de données plus volumineux et de grande dimension. À la fin d'un projet, il est important de pouvoir présenter le résultat final de manière claire, concise et convaincante que vos utilisateurs puissent comprendre et comprendre.
Vous avez peut-être lu mon article précédent "5 visualisations de données rapides et faciles en Python avec Code" , qui présente 5 méthodes de visualisation de base : nuages de points, graphiques linéaires, histogrammes, diagrammes à barres et diagrammes en boîte. . Ces cinq méthodes de visualisation sont simples mais puissantes avec lesquelles vous pouvez certainement tirer d’énormes gains de vos ensembles de données. Dans cet article, nous présenterons 4 autres méthodes de visualisation de données, mais elles sont légèrement plus compliquées. Vous pouvez les utiliser après avoir lu les méthodes de base présentées dans l'article précédent.
Regardez maintenant le code : par rapport à la bibliothèque matplotlib, la bibliothèque seaborn peut être utilisée pour des graphiques plus avancés et nécessite généralement plus de composants, tels que comme plus de couleurs, de graphiques ou de variables. La bibliothèque Matplotlib est utilisée pour afficher des graphiques, numpy est utilisé pour générer des données et pandas est utilisé pour le contrôle. Le traçage n'est qu'un simple appel de fonction Seaborn, et si vous trouvez quelque chose de visuellement spécial, vous pouvez également définir la carte des couleurs via cette fonction.
# Importing libs importseaborn as sns import pandas aspd importnumpyasnp importmatplotlib.pyplotasplt # Create a random dataset data=pd.DataFrame(np.random.random((10,6)), columns=["Iron Man","CaptainAmerica","BlackWidow","Thor","Hulk", "Hawkeye"]) print(data) # Plot the heatmap heatmap_plot=sns.heatmap(data, center=0, cmap='gist_ncar') plt.show()
Le code de Seaborn est super simple et nous allons l'introduire en créant une distribution asymétrique. Si vous trouvez que certaines couleurs et nuances sont visuellement plus distinctives, la plupart des paramètres facultatifs visent à un aspect plus clair.
Cette fois, nous pourrons utiliser matplotlib directement pour créer des visualisations au lieu de seaborn. L'angle auquel se trouve chaque attribut doit être calculé car nous voulons qu'ils soient uniformément espacés le long de la circonférence. Nous placerons des étiquettes à chaque angle calculé, puis tracerons la valeur sous la forme d'un point dont la distance par rapport au centre dépend de sa valeur ou de son niveau. Enfin, pour plus de clarté, nous remplirons la zone contenue par les lignes reliant les points de propriété avec une couleur semi-transparente.
# Import libs import pandas aspd importseabornassns importnumpyasnp importmatplotlib.pyplotasplt # Get the data df=pd.read_csv("avengers_data.csv") print(df) """ # Name Attack Defense Speed Range Health 0 1 Iron Man 83 80 75 70 70 1 2 Captain America 60 62 63 80 80 2 3 Thor 80 82 83 100 100 3 3 Hulk 80 100 67 44 92 4 4 Black Widow 52 43 60 50 65 5 5 Hawkeye 58 64 58 80 65 """ # Get the data for Iron Man labels=np.array(["Attack","Defense","Speed","Range","Health"]) stats=df.loc[0,labels].values # Make some calculations for the plot angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False) stats=np.concatenate((stats,[stats[0]])) angles=np.concatenate((angles,[angles[0]])) # Plot stuff fig=plt.figure() ax=fig.add_subplot(111, polar=True) ax.plot(angles, stats, 'o-', linewidth=2) ax.fill(angles, stats, alpha=0.25) ax.set_thetagrids(angles *180/np.pi, labels) ax.set_title([df.loc[0,"Name"]]) ax.grid(True) plt.show()
Pokémon avec statistiques de Kaggle :
HP, Attaque, Défense, Attaque spéciale, Défense spéciale, Vitesse因此,与stats wise最匹配的Pokemon将紧密连接在一起。例如,我们看到,在顶部,Arbok和Fearow是直接连接的,而且,如果我们查看数据,Arbok总共有438个,而Fearow有442个,非常接近。但是一旦我们移动到Raticate,我们得到的总数是413,这与Arbok和Fearow的差别很大,这就是它们被分开的原因。当我们移动树的时候,基于相似性,Pokemon被分的组越来越多。在绿色组中的Pokemon相互之间比红色组中的更相似,即使没有直接的绿色连接。
对于树形图,我们实际上要使用Scipy的。在查看了数据集之后,我们将去掉字符串类型的列。我们这么做只是为了要得到正确的可视化结果,但在实践中,最好是把这些字符串转换成分类变量,为了得到更好的结果和进行比较,我们还设置了数据帧索引,以便能够适当地用它作为引用每个节点的列。最后,在Scipy中计算和绘制树形图是非常简单的事了。
# Import libs import pandas aspd frommatplotlibimportpyplotasplt fromscipy.clusterimport hierarchy importnumpyasnp # Read in the dataset # Drop any fields that are strings # Only get the first 40 because this dataset is big df=pd.read_csv('Pokemon.csv') df=df.set_index('Name') del df.index.name df=df.drop(["Type 1", "Type 2", "Legendary"], axis=1) df=df.head(n=40) # Calculate the distance between each sample Z =hierarchy.linkage(df, 'ward') # Orientation our tree hierarchy.dendrogram(Z, orientation="left", labels=df.index) plt.show()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!