我們人類是視覺的動物,因此在面對非常大量的資料的時候有一個合適、快速、有效的視覺化方法絕對是非常有必要的。所以今天就來簡單介紹幾個在做資料分析的時候最基礎的幾個圖表吧
雖然它其實也是基於mathplotlib核心開發的,而且一般python在學習的過程中也幾乎都是先學到mathpoltlib,不過我還是強烈建議在可以的情況下儘量優先用seaborn
,因為它
就 很 好看。
ggplot2對於R來說讓資料視覺化提升到了一個新的境界,python也不能每次都畫太醜的圖你說是吧?
df = pd.read_excel("GPA.xlsx")
df["Department"] = df["科號"].apply(lambda x: re.search("[A-Z]+", x)[0]) # 取出系所為連續字母
df["GPA"] = df["平均值"].apply(lambda x: re.search("[\d\.]+", x)[0]).apply(float) # 取出數字並轉換型態
df["var"] = df["標準差"].apply(lambda x: re.search("[\d\.]+", x)[0]).apply(float)
df
df2 = df[df["Department"].isin(["EE", "PHYS", "MATH", "ECON"])] # 篩選一下資料好做舉例
盒裝圖會顯示的資訊有
因此很適合讓我們檢視看看是否有離群值,或是資料分佈是否過於集中/分散
# 盒狀圖
sns.boxplot(x=df2["Department"], y=df2["GPA"])
小提琴圖和盒狀圖很類似,只是比起離散的幾個數據點資料,更多了資料在不通過值時候的密度(即那個值的時候有多少資料)
sns.violinplot(x=df2["Department"], y=df2["GPA"])
當我們要同時觀察兩個以上的變數的時候,我們所能詳細觀察的資料就通常不會像一維資料一樣細,但這個時候我們反而是會比較重視兩個變數之間的關係,因此散佈圖就是一個很好的工具,而同時我們可以加上趨勢線來輔助我們判斷
# 分佈圖
sns.regplot(x=df2["GPA"], y=df2["var"],ci=10)
有的時候我們的資料會有很多組的變數,你需要大概的看一下這些變數之間的關係,但又不需要到去畫出Correlation那麼細,這個時候平行座標圖絕對是你的好選擇
from pandas.plotting import parallel_coordinates
iris = sns.load_dataset('iris') # 換個資料範例用iris
parallel_coordinates(iris, 'species')
plt.show()
最後放張梗圖打完收工
在最初看到這種圖的時候真的挺震驚的,有一種「啊原來還能這樣玩啊」的感覺XD