ホームページ  >  記事  >  バックエンド開発  >  Python データ視覚化の 4 つの方法の紹介 (例付き)

Python データ視覚化の 4 つの方法の紹介 (例付き)

不言
不言転載
2018-11-27 15:33:354289ブラウズ

この記事では、Python データ視覚化の 4 つの方法を (例とともに) 紹介します。これには一定の参考価値があります。必要な友人が参照できます。お役に立てば幸いです。

要約: この記事では、ヒート マップ、2 次元密度マップ、スパイダー マップ、およびツリー マップという 4 つの Python データ視覚化方法について説明します。

データの視覚化は、データ サイエンスまたは機械学習プロジェクトの重要な部分です。データをより深く理解するために探索的データ分析 (EDA) から始めることがよくありますが、ビジュアライゼーションの作成は、特に大規模で高次元のデータ セットの場合、問題をより明確かつ理解しやすくするのに非常に役立ちます。プロジェクトの最後には、ユーザーが理解し納得できる明確かつ簡潔で説得力のある方法で最終結果を提示できることが重要です。

以前の記事「コードを使用した Python での 5 つの迅速かつ簡単なデータ視覚化」を読んだことがあるかもしれません。この記事では、散布図、折れ線グラフ、ヒストグラム、棒グラフ、箱ひげ図という 5 つの基本的な視覚化方法を紹介しています。 。これら 5 つは、データ セットから確実に大きな利益を得ることができる、シンプルでありながら強力な視覚化方法です。この記事では、その他の 4 つのデータ視覚化手法を紹介しますが、少し複雑なので、前回の記事で紹介した基本的な手法を読んだ上で使用できます。

ヒート マップ

ヒート マップはデータの行列表現であり、各行列値が色で表されます。異なる色は異なるレベルを表し、マトリックス インデックスは 2 つの対照的な列またはフィーチャを相互に接続します。ヒートマップは、1 つのレベルを色として直接表示できるため、複数の特徴変数間の関係を示すのに適しています。ヒート マップ内のいくつかのポイントを確認することで、各関係がデータ セット内の他の関係とどのように比較されるかを確認することもできます。色は非常に直感的であるため、シンプルな表現を提供します。

Python データ視覚化の 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()

2 次元密度プロット (2D 密度プロット)

2 次元密度プロットは、1 次元バージョンを単純に拡張したものです。 2 つの変数の確率分布。以下の 2D 密度プロットを見てみましょう。右側のスケールは、色の各点の確率を表しています。データセットを見ると、最も確率が高いのは、サイズが約 0.5、速度が 1.4 程度のようです。ご覧のとおり、2D 密度プロットは、1D 密度プロットのような 1 つの変数だけではなく、2 つの変数が最も集中しているデータの領域を迅速に決定するのに最適です。 2 次元密度プロットは、出力にとって重要な 2 つの変数があり、それらが出力の分布にどのように寄与するかを理解したい場合に特に役立ちます。

Python データ視覚化の 4 つの方法の紹介 (例付き)Seaborn のコードは非常にシンプルなので、偏った分布を作成して紹介します。特定の色や色合いが視覚的により特徴的であると思われる場合は、オプションのパラメータのほとんどは見た目をより明確にするためのものです。

スパイダー プロット

スパイダー ダイアグラムは、1 対多の関係を表示する最良の方法の 1 つです。つまり、複数の変数の値を、単一の変数またはカテゴリとは異なるものとしてプロットおよび表示できます。スパイダー ダイアグラムでは、面積と長さがいくつかの方向で変化するため、ある変数の別の変数に対する特性が明らかです。変数が複数のカテゴリでどのように積み重なっているかを確認したい場合は、それらを並べてプロットします。下の画像では、3 人の映画キャラクターのさまざまな属性を比較し、それぞれの強みがどこにあるかを簡単に確認できます。

Python データ視覚化の 4 つの方法の紹介 (例付き)今回は、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()

ツリー ダイアグラム

私たちは小学校の頃からツリー ダイアグラムを使ってきました。ツリー ダイアグラムは自然で直感的で説明が簡単です。直接接続されているノードは密接に関連しており、複数の接続を持つノードとは大きく異なります。下の画像では、統計に基づいて Kaggle からの

Pokemon with stats

データセットの一部をプロットしました: HP、攻撃、防御、特殊攻撃、特殊防御、速度

因此,与stats wise最匹配的Pokemon将紧密连接在一起。例如,我们看到,在顶部,Arbok和Fearow是直接连接的,而且,如果我们查看数据,Arbok总共有438个,而Fearow有442个,非常接近。但是一旦我们移动到Raticate,我们得到的总数是413,这与Arbok和Fearow的差别很大,这就是它们被分开的原因。当我们移动树的时候,基于相似性,Pokemon被分的组越来越多。在绿色组中的Pokemon相互之间比红色组中的更相似,即使没有直接的绿色连接。

Python データ視覚化の 4 つの方法の紹介 (例付き)

对于树形图,我们实际上要使用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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。