基于Python的數據可視化 matplotlib seaborn pandas

原文采用了kaggle上iris花的數據,數據來源從上面的網址上找噢

如果沒有seaborn庫 安裝方法如下

http://www.ithao123.cn/content-10393533.html

正式開始了~~~

# 首先載入pandas
importpandasas pd
 
# 我們將載入seaborn,但是因為載入時會有警告出現,因此先載入warnings,忽略警告
importwarnings
warnings.filterwarnings("ignore")
importseabornas sns
importmatplotlib.pyplotas 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
# 讓我們用counts功能看下一共有多少種花
iris["Species"].value_counts()

結果是:

Iris-setosa        50
Iris-virginica    50
Iris-versicolor    50
Name: Species, dtype: int64

1.

# 使用 .plot 做散點圖
iris.plot(kind="scatter", x="SepalLengthCm", y="SepalWidthCm")#數據為萼片的長和寬 結果如下

2.

# 開始使用seaborn了它能同時顯示直方圖噢
sns.jointplot(x="SepalLengthCm", y="SepalWidthCm", data=iris, size=5)

3神奇的還在下面:

# 我們還可以用seaborn's FacetGrid 標記不同的種類噢
sns.FacetGrid(iris, hue="Species", size=5)  #hue英文是色彩的意思
  .map(plt.scatter, "SepalLengthCm", "SepalWidthCm") #注意這里的plt哦
  .add_legend()

4箱線圖!

#  Seaborn中的boxplot,可以畫箱線圖,可以看出不同種類的分布情況
sns.boxplot(x="Species", y="PetalLengthCm", data=iris)

5、

# 利用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、小提琴圖

# 這圖可以變現出密度的分布
sns.violinplot(x="Species", y="PetalLengthCm", data=iris, size=6)

7、kdeplot

# 通過這個曲線圖可以看出不同特征值時的分布密度
sns.FacetGrid(iris, hue="Species", size=6) 
  .map(sns.kdeplot, "PetalLengthCm") 
  .add_legend()

8.大招來了

#  pairplot顯示不同特征之間的關系
sns.pairplot(iris.drop("Id", axis=1), hue="Species", size=3)

9、中間對角線的圖形也可以用kde顯示哦

# 修改參數dige_kind
sns.pairplot(iris.drop("Id", axis=1), hue="Species", size=3, diag_kind="kde")

10.現在是pandas表現的時間了

# 用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,這樣每個點都是一條曲線

# 畫圖的函數在下面,我們會發現相同種類的線總是纏綿在一起,可以和聚類混在一起噢,事實上他們與歐氏距離是有關系的
frompandas.tools.plottingimportandrews_curves
andrews_curves(iris.drop("Id", axis=1), "Species")

12輪廓圖

https://en.wikipedia.org/wiki/Parallel_coordinates

# 輪廓圖也是看高維數據的一種方法,將不同的特征放在橫坐標,然后將各點的特征值放在縱坐標就可以了
frompandas.tools.plottingimportparallel_coordinates
parallel_coordinates(iris.drop("Id", axis=1), "Species")

13 radviz

http://www.doc88.com/p-912968623585.html

# 這也是一種將高維點表現在二維平面的方法,具體作圖方法應該在上面的網址上應該有
frompandas.tools.plottingimportradviz
radviz(iris.drop("Id", axis=1), "Species")

暫時就是這些,希望會對大家有幫助

 

 

 

 本文由用戶 xabenohjoxo998 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!