iris数据_Kaggle 数据可视化课程5
Lesson 5 直方圖和密度圖
在本教程中,您將學習所有關于直方圖和密度圖。
設置notebook
與往常一樣,我們從設置編碼環境開始。
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選擇數據集
我們將使用150種不同的花,或來自三種不同的鳶尾(鳶尾色Iris setosa,百色鳶尾Iris versicolor,和處女鳶尾Iris virginica)各50種的數據集。
加載并檢查數據
數據集中的每一行對應于不同的花。有四種測量方法:萼片的長度和寬度,以及花瓣的長度和寬度。我們也記錄了相應的物種。
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]:
直方圖
假設我們想創建一個直方圖,看看鳶尾花的花瓣長度是如何變化的。我們可以用sns.distplot來做這個。
In [3]:
# Histogram sns.distplot(a=iris_data['Petal Length (cm)'], kde=False)Out[3]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f96c5b1da20>我們用兩個額外的信息自定義命令的行為:
- a= 選擇我們想要繪制的列(在本例中,我們選擇了 'Petal Length (cm)'。*
- kde=False 是我們在創建直方圖時總會提供的,因為省略它會創建一個稍微不同的圖。
密度圖
下一種類型的圖是kernel density estimate (KDE) 圖。如果您不熟悉KDE圖,可以將其視為平滑的直方圖。
為了制作一個KDE圖,我們使用sns.kdeplot命令。將shade=True設置為曲線下的區域的顏色(和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
在創建KDE圖時,我們不受限于單個列。我們可以用sns.jointplot創建一個二維(2D)的KDE圖。
在下面的圖中,顏色編碼顯示了我們看到萼片寬度和花瓣長度的不同組合的可能性,而圖中較暗的部分更有可能。
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軸數據的KDE圖(在本例中為iris_data['Petal Length (cm)']),以及
- 圖右側的曲線是y軸數據的KDE圖(在本例中為 iris_data['Sepal Width (cm)'])。
Color-coded plots
在本教程的下一部分中,我們將創建一些圖來了解物種之間的差異。為此,我們首先將數據集分成三個單獨的文件,每個物種一個。
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三次為每個物種創建一個不同的直方圖。我們使用label=來設置每個柱狀圖在圖例中的顯示方式。
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>在這種情況下,圖例不會自動出現在情節中。要強制它顯示(對于任何圖的類型),我們總是可以使用 plt.legend()。
我們還可以使用sns.kdeplot為每個物種創建一個KDE圖。同樣, label= 用于設置圖例中的值。
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')從圖中可以看出一個有趣的模式,即這些植物似乎屬于兩個類群中的一個,其中Iris versicolor和Iris virginica的花瓣長度似乎有相似的值,而Iris setosa單獨屬于單獨類別。
事實上,根據這一數據,我們甚至可以把任何鳶尾屬植物作為Iris setosa (而不是Iris versicolor的或Iris virginica )僅僅通過觀察花瓣長度:如果一個鳶尾屬植物花瓣長度小于2厘米,它是最有可能Iris setosa !
接下來?
點擊 這里進行練習!
總結
以上是生活随笔為你收集整理的iris数据_Kaggle 数据可视化课程5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基础-Java中的内存分配与回收
- 下一篇: wpf中xps文档合并功能实现