原文采用了kaggle上iris花的資料,資料來源從上面的網址上找噢
如果沒有seaborn庫 安裝方法如下
http://www.ithao123.cn/content-10393533.html
正式開始了~~~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 首先載入pandas import pandas as pd # 我們將載入seaborn,但是因為載入時會有警告出現,因此先載入warnings,忽略警告 import warnings warnings.filterwarnings("ignore") import seaborn as sns import matplotlib.pyplot as plt sns.set(style="white", color_codes=True) # 載入資料 iris = pd.read_csv("../input/Iris.csv") # 資料現在為 DataFrame格式 # 用head函式看一下資料結構啥樣 iris.head() |
資料結構就這樣:
Id | SepalLengthCm | SepalWidthCm | PetalLengthCm | PetalWidthCm | Species | |
---|---|---|---|---|---|---|
0 | 1 | 5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa |
1 | 2 | 4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa |
2 | 3 | 4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa |
3 | 4 | 4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa |
4 | 5 | 5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa |
1 2 |
# 讓我們用counts功能看下一共有多少種花 iris["Species"].value_counts() |
結果是:
1 2 3 4 |
Iris-setosa 50 Iris-virginica 50 Iris-versicolor 50 Name: Species, dtype: int64 |
1.
1 2 |
# 使用 .plot 做散點圖 iris.plot(kind="scatter", x="SepalLengthCm", y="SepalWidthCm")#資料為萼片的長和寬 結果如下 |
2.
1 2 |
# 開始使用seaborn了它能同時顯示直方圖噢 sns.jointplot(x="SepalLengthCm", y="SepalWidthCm", data=iris, size=5) |
3神奇的還在下面:
1 2 3 4 |
# 我們還可以用seaborn's FacetGrid 標記不同的種類噢 sns.FacetGrid(iris, hue="Species", size=5) #hue英文是色彩的意思 .map(plt.scatter, "SepalLengthCm", "SepalWidthCm") #注意這裡的plt哦 .add_legend() |
4箱線圖!
1 2 |
# Seaborn中的boxplot,可以畫箱線圖,可以看出不同種類的分佈情況 sns.boxplot(x="Species", y="PetalLengthCm", data=iris) |
5、
1 2 3 4 5 6 7 |
# 利用striplot可以錦上添花,加上散點圖 # # 使振動值jitter=True 使各個散點分開,要不然會是一條直線 # # 注意這裡將座標圖用ax來儲存了哦,這樣第二次才會在原來的基礎上加點 ax = sns.boxplot(x="Species", y="PetalLengthCm", data=iris) ax = sns.stripplot(x="Species", y="PetalLengthCm", data=iris, jitter=True, edgecolor="gray") |
6、小提琴圖
1 2 |
# 這圖可以變現出密度的分佈 sns.violinplot(x="Species", y="PetalLengthCm", data=iris, size=6) |
7、kdeplot
1 2 3 4 |
# 通過這個曲線圖可以看出不同特徵值時的分佈密度 sns.FacetGrid(iris, hue="Species", size=6) .map(sns.kdeplot, "PetalLengthCm") .add_legend() |
8.大招來了
1 2 |
# pairplot顯示不同特徵之間的關係 sns.pairplot(iris.drop("Id", axis=1), hue="Species", size=3) |
9、中間對角線的圖形也可以用kde顯示哦
1 2 |
# 修改引數dige_kind sns.pairplot(iris.drop("Id", axis=1), hue="Species", size=3, diag_kind="kde") |
10.現在是pandas表現的時間了
1 2 |
# 用Pandas 快速做出每個特徵在不同種類下的箱線圖 iris.drop("Id", axis=1).boxplot(by="Species", figsize=(12, 6)) |
11.調和曲線圖 Andrew Curves
首先啥是Andrew curves呢 看維基百科
https://en.wikipedia.org/wiki/Andrews_plot
他是將高維的點 化為二維的曲線,曲線是一條傅立葉函式的樣子,引數項為不同的特徵值,臆想出來了自變數t,這樣每個點都是一條曲線
1 2 3 |
# 畫圖的函式在下面,我們會發現相同種類的線總是纏綿在一起,可以和聚類混在一起噢,事實上他們與歐氏距離是有關係的 from pandas.tools.plotting import andrews_curves andrews_curves(iris.drop("Id", axis=1), "Species") |
12輪廓圖
https://en.wikipedia.org/wiki/Parallel_coordinates
1 2 3 |
# 輪廓圖也是看高維資料的一種方法,將不同的特徵放在橫座標,然後將各點的特徵值放在縱座標就可以了 from pandas.tools.plotting import parallel_coordinates parallel_coordinates(iris.drop("Id", axis=1), "Species") |
13 radviz
http://www.doc88.com/p-912968623585.html
1 2 3 |
# 這也是一種將高維點表現在二維平面的方法,具體作圖方法應該在上面的網址上應該有 from pandas.tools.plotting import radviz radviz(iris.drop("Id", axis=1), "Species") |
暫時就是這些,希望會對大家有幫助
補充參考:
http://wenku.baidu.com/link?url=l1tNiAh1YegiSIwDjcS6f4swybDt3A-qczVXpbXf_7S6RUGC_gOOoP9fv4w8VXSMKlYiz0HlhhTsysEwwiqYORMwg-phyehtXlAIAAdEJ8G