iris数据_Kaggle 数据可视化课程5
Lesson 5 直方圖和密度圖
在本教程中,您將學(xué)習(xí)所有關(guān)于直方圖和密度圖。
設(shè)置notebook
與往常一樣,我們從設(shè)置編碼環(huán)境開(kāi)始。
In [1]:
import pandas as pd pd.plotting.register_matplotlib_converters() import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns print("Setup Complete")Output
Setup Complete選擇數(shù)據(jù)集
我們將使用150種不同的花,或來(lái)自三種不同的鳶尾(鳶尾色I(xiàn)ris setosa,百色鳶尾Iris versicolor,和處女鳶尾Iris virginica)各50種的數(shù)據(jù)集。
加載并檢查數(shù)據(jù)
數(shù)據(jù)集中的每一行對(duì)應(yīng)于不同的花。有四種測(cè)量方法:萼片的長(zhǎng)度和寬度,以及花瓣的長(zhǎng)度和寬度。我們也記錄了相應(yīng)的物種。
In [2]:
# Path of the file to read iris_filepath = "../input/iris.csv"# Read the file into a variable iris_data iris_data = pd.read_csv(iris_filepath, index_col="Id")# Print the first 5 rows of the data iris_data.head()Out[2]:
直方圖
假設(shè)我們想創(chuàng)建一個(gè)直方圖,看看鳶尾花的花瓣長(zhǎng)度是如何變化的。我們可以用sns.distplot來(lái)做這個(gè)。
In [3]:
# Histogram sns.distplot(a=iris_data['Petal Length (cm)'], kde=False)Out[3]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f96c5b1da20>我們用兩個(gè)額外的信息自定義命令的行為:
- a= 選擇我們想要繪制的列(在本例中,我們選擇了 'Petal Length (cm)'。*
- kde=False 是我們?cè)趧?chuàng)建直方圖時(shí)總會(huì)提供的,因?yàn)槭÷运鼤?huì)創(chuàng)建一個(gè)稍微不同的圖。
密度圖
下一種類型的圖是kernel density estimate (KDE) 圖。如果您不熟悉KDE圖,可以將其視為平滑的直方圖。
為了制作一個(gè)KDE圖,我們使用sns.kdeplot命令。將shade=True設(shè)置為曲線下的區(qū)域的顏色(和data=具有相同的功能)。
In [4]:
# KDE plot sns.kdeplot(data=iris_data['Petal Length (cm)'], shade=True)Out[4]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f96c5a664e0>2D KDE plots
在創(chuàng)建KDE圖時(shí),我們不受限于單個(gè)列。我們可以用sns.jointplot創(chuàng)建一個(gè)二維(2D)的KDE圖。
在下面的圖中,顏色編碼顯示了我們看到萼片寬度和花瓣長(zhǎng)度的不同組合的可能性,而圖中較暗的部分更有可能。
In [5]:
# 2D KDE plot sns.jointplot(x=iris_data['Petal Length (cm)'], y=iris_data['Sepal Width (cm)'], kind="kde")Out[5]:
<seaborn.axisgrid.JointGrid at 0x7f96c59cbef0>注意,除了中間的2D KDE圖外,
- 圖中頂部的曲線是x軸數(shù)據(jù)的KDE圖(在本例中為iris_data['Petal Length (cm)']),以及
- 圖右側(cè)的曲線是y軸數(shù)據(jù)的KDE圖(在本例中為 iris_data['Sepal Width (cm)'])。
Color-coded plots
在本教程的下一部分中,我們將創(chuàng)建一些圖來(lái)了解物種之間的差異。為此,我們首先將數(shù)據(jù)集分成三個(gè)單獨(dú)的文件,每個(gè)物種一個(gè)。
In [6]:
# Paths of the files to read iris_set_filepath = "../input/iris_setosa.csv" iris_ver_filepath = "../input/iris_versicolor.csv" iris_vir_filepath = "../input/iris_virginica.csv"# Read the files into variables iris_set_data = pd.read_csv(iris_set_filepath, index_col="Id") iris_ver_data = pd.read_csv(iris_ver_filepath, index_col="Id") iris_vir_data = pd.read_csv(iris_vir_filepath, index_col="Id")# Print the first 5 rows of the Iris versicolor data iris_ver_data.head()Out[6]:
在下面的代碼單元格中,我們使用sns.distplot三次為每個(gè)物種創(chuàng)建一個(gè)不同的直方圖。我們使用label=來(lái)設(shè)置每個(gè)柱狀圖在圖例中的顯示方式。
In [7]:
# Histograms for each species sns.distplot(a=iris_set_data['Petal Length (cm)'], label="Iris-setosa", kde=False) sns.distplot(a=iris_ver_data['Petal Length (cm)'], label="Iris-versicolor", kde=False) sns.distplot(a=iris_vir_data['Petal Length (cm)'], label="Iris-virginica", kde=False)# Add title plt.title("Histogram of Petal Lengths, by Species")# Force legend to appear plt.legend()Out[7]:
<matplotlib.legend.Legend at 0x7f96c5849470>在這種情況下,圖例不會(huì)自動(dòng)出現(xiàn)在情節(jié)中。要強(qiáng)制它顯示(對(duì)于任何圖的類型),我們總是可以使用 plt.legend()。
我們還可以使用sns.kdeplot為每個(gè)物種創(chuàng)建一個(gè)KDE圖。同樣, label= 用于設(shè)置圖例中的值。
In [8]:
# KDE plots for each species sns.kdeplot(data=iris_set_data['Petal Length (cm)'], label="Iris-setosa", shade=True) sns.kdeplot(data=iris_ver_data['Petal Length (cm)'], label="Iris-versicolor", shade=True) sns.kdeplot(data=iris_vir_data['Petal Length (cm)'], label="Iris-virginica", shade=True)# Add title plt.title("Distribution of Petal Lengths, by Species")Out[8]:
Text(0.5, 1.0, 'Distribution of Petal Lengths, by Species')從圖中可以看出一個(gè)有趣的模式,即這些植物似乎屬于兩個(gè)類群中的一個(gè),其中Iris versicolor和Iris virginica的花瓣長(zhǎng)度似乎有相似的值,而Iris setosa單獨(dú)屬于單獨(dú)類別。
事實(shí)上,根據(jù)這一數(shù)據(jù),我們甚至可以把任何鳶尾屬植物作為Iris setosa (而不是Iris versicolor的或Iris virginica )僅僅通過(guò)觀察花瓣長(zhǎng)度:如果一個(gè)鳶尾屬植物花瓣長(zhǎng)度小于2厘米,它是最有可能Iris setosa !
接下來(lái)?
點(diǎn)擊 這里進(jìn)行練習(xí)!
總結(jié)
以上是生活随笔為你收集整理的iris数据_Kaggle 数据可视化课程5的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java基础-Java中的内存分配与回收
- 下一篇: wpf中xps文档合并功能实现