この記事では、Python データ視覚化の 4 つの方法を (例とともに) 紹介します。これには一定の参考価値があります。必要な友人が参照できます。お役に立てば幸いです。
要約: この記事では、ヒート マップ、2 次元密度マップ、スパイダー マップ、およびツリー マップという 4 つの Python データ視覚化方法について説明します。
データの視覚化は、データ サイエンスまたは機械学習プロジェクトの重要な部分です。データをより深く理解するために探索的データ分析 (EDA) から始めることがよくありますが、ビジュアライゼーションの作成は、特に大規模で高次元のデータ セットの場合、問題をより明確かつ理解しやすくするのに非常に役立ちます。プロジェクトの最後には、ユーザーが理解し納得できる明確かつ簡潔で説得力のある方法で最終結果を提示できることが重要です。
以前の記事「コードを使用した Python での 5 つの迅速かつ簡単なデータ視覚化」を読んだことがあるかもしれません。この記事では、散布図、折れ線グラフ、ヒストグラム、棒グラフ、箱ひげ図という 5 つの基本的な視覚化方法を紹介しています。 。これら 5 つは、データ セットから確実に大きな利益を得ることができる、シンプルでありながら強力な視覚化方法です。この記事では、その他の 4 つのデータ視覚化手法を紹介しますが、少し複雑なので、前回の記事で紹介した基本的な手法を読んだ上で使用できます。
ヒート マップ次に、コードを見てみましょう。 matplotlib ライブラリと比較して、seaborn ライブラリはより高度なチャートに使用でき、通常はより多くのコンポーネントが必要です。より多くの色、グラフィック、または変数として。 Matplotlib ライブラリはグラフの表示に使用され、numpy はデータの生成に使用され、pandas は制御に使用されます。プロットは単純な seaborn 関数呼び出しです。視覚的に特別なものを見つけた場合は、この関数を通じてカラー マップを設定することもできます。
# 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()
Seaborn のコードは非常にシンプルなので、偏った分布を作成して紹介します。特定の色や色合いが視覚的により特徴的であると思われる場合は、オプションのパラメータのほとんどは見た目をより明確にするためのものです。
スパイダー プロット今回は、seaborn の代わりに matplotlib を直接使用してビジュアライゼーションを作成できるようになります。各属性を円周に沿って等間隔に配置したいため、各属性の角度を計算する必要があります。計算された各角度にラベルを配置し、中心からの距離が値またはレベルに応じて異なる点として値をプロットします。最後に、わかりやすくするために、プロパティ ポイントを接続する線で囲まれた領域を半透明の色で塗りつぶします。
# 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()
データセットの一部をプロットしました: HP、攻撃、防御、特殊攻撃、特殊防御、速度
因此,与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()
以上がPython データ視覚化の 4 つの方法の紹介 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。