[數據可視化]Pandas單變量畫圖

Pandas單變量畫圖

Bar Chat Line Chart Area Chart Histogram
df.plot.bar() df.plot.line() df.plot.area() df.plot.hist()
適合定類數據和小範圍取值的定序數據 適合定序數據和定距數據 適合定序數據和定距數據 適合定距數據

pandas庫是Python數據分析最核心的一個工具庫:“殺手級特徵”,使整個生態系統融合在一起。除了數據讀取、轉換之外,也可以進行數據可視化。易於使用和富有表現力的pandas繪圖API是pandas流行的重要組成部分。

在本節中,我們將學習基本的“pandas”繪圖工具,從最簡單的可視化類型開始:單變量或“單變量”可視化。這包括條形圖和折線圖等基本工具。通過這些,我們將瞭解pandas繪製庫結構,並花一些時間檢查數據類型。

數據分類:

  1. Norminal Data 定類變量:變量的不同取值僅僅代表了不同類的事物。問卷的人口特徵中最常使用的問題,而調查被訪對象的“性別”,就是 定類變量。對於定類變量,加減乘除等運算是沒有實際意義的;
  2. Ordinal Data定序變量:變量的值不僅能夠代表事物的分類,還能代表事物按某種特性的排序,這樣的變量叫定序變量。問卷的人口特徵中最常使用的問題“教育程度“,以及態度量表題目等都是定序變量,定序變量的值之間可以比較大小,或者有強弱順序,但兩個值的差一般沒有什麼實際意義。
  3. Interval Data 定距變量:變量的值之間可以比較大小,兩個值的差有實際意義,這樣的變量叫定距變量。有時問卷在調查被訪者的“年齡”和“每月平均收入”,都是定距變量。
  4. Ratio Data 定比變量, 有絕對0點,如質量,高度。定比變量與定距變量在市場調查中一般不加以區分,它們的差別在於,定距變量取值爲“0”時,不表示“沒有”,僅僅是取值爲0。定比變量取值爲“0”時,則表示“沒有”
import pandas as pd
reviews = pd.read_csv("../input/wine-reviews/winemag-data_first150k.csv", index_col=0)
reviews.head(3)

結果:

條形圖可以說是最簡單的數據可視化。他們將類別映射到數字:例如,早餐(一類)消費的雞蛋數量;或者,世界葡萄酒產區(類別)與其生產的葡萄酒標籤數量(數量):

#取數據province特徵下前10個最常出現的類別:province省份--->出現次數;
reviews['province'].value_counts().head(10).plot.bar()

這個圖表告訴我們什麼?它說加州生產的葡萄酒遠遠超過世界上任何其他省份!我們可能會問,加州葡萄酒總量的百分之幾是多少?這個條形圖告訴了我們絕對數字,但知道相對比例會更有用:

#取province特徵,統計,取前10,計算比例,畫圖bar plot
(reviews['province'].value_counts().head(10)/len(reviews)).plot.bar()

加州生產葡萄酒佔雜誌評選到的葡萄酒的幾乎三分之一!

條形圖非常靈活:高度可以代表任何東西,只要它是一個數字。每個欄都可以代表任何東西,只要它是一個類別。

在這種情況下,類別是標稱類別nominal categories:“純”類別,類別排序沒有多大意義。標稱分類變量包括國家,郵政編碼,奶酪類型等。另一種是序數類別ordinal categories:類別見的排序是有意義,如地震震級,有一定數量公寓的住宅小區,以及當地熟食店的薯條大小。

或者,在我們的案例中,Wine Magazine分配的某個評分的評論數量[ordinal categories]:

#統計各個得分的數目,直接顯示:可以發現,第一個bar是87,第二個是88;按照數目多少排序的
reviews['points'].value_counts().plot.bar()

reviews['points'].value_counts().sort_index().plot.bar()

正如你所看到的,每個釀出的酒總分都在80到100之間。而且,如果我們相信葡萄酒雜誌是一個品味良好的仲裁者,那麼類別92就會比類別91更有意義地“更好”。

折線圖Line charts

葡萄酒評論記分卡有20個不同的獨特值可供填寫,我們的條形圖幾乎不夠。如果雜誌評價0-100的話,有100個不同的類別,該怎麼辦?類別太多了,不適合用條形圖處理!

在這種情況下,我們可以使用折線圖代替條形圖:

#統計各個得分的數目,將index排序-從小到大(顯示更合理)
reviews['points'].value_counts().sort_index().plot.line()

折線圖可以傳遞任意數量的單個取值[100類,1000類],使其成爲具有許多唯一值或類別的分佈的首選工具[類別性數據,但是有許多許多可能值]

但是,折線圖有一個重要的缺點:與條形圖不同,它們不適合名義分類數據。雖然條形圖區分了點線圖的每個“類型”,但它們將它們組合在一起。因此,折線圖斷言水平軸上的值的順序,並且對於某些數據,順序將沒有意義。畢竟,從加利福尼亞到華盛頓到托斯卡納的“下降”並不意味着什麼![折線圖更適合於ordinal數據,具有一定的連續性,類別間的大小是有關係的,變化趨勢也有一定的意義]。

折線圖也使得區分單個值變得更加困難[連線]。

通常,如果你的數據可以放入條形圖中,只需使用條形圖!

面積圖Area charts

面積圖就是底部有陰影的折線圖

reviews['points'].value_counts().sort_index().plot.area()

當僅繪製一個變量時,面積圖和折線圖之間的差異主要是視覺方面上:一個底部有陰影,一個沒有。在這種情況下,它們可以互換使用。

定距數據Interval data

定距變量的例子是太陽的溫度。定距變量超出了序數分類變量:它具有有意義的順序,在某種意義上我們可以量化兩個條目之間的差異本身就是定距變量。

例如,如果我說這個樣本的水是-20攝氏度,而另一個樣本是120攝氏度,那麼我可以量化它們之間的差異:140度“值”的熱量。

有時差異可能是定性的。至少,能夠如此清楚地陳述某些東西感覺比說“測量”要多得多,比如說,你會買這種酒而不是那種,因爲這個在一些口味測試中得了92分而且只有一個得到了更確切地說,任何具有無限多個可能值的變量肯定是區間變量。

折線圖適用於定距數據。條形圖不行 - 除非你的測量能力非常有限,定距數據自然會有很大變化[取值太多]

將一個新工具直方圖應用到我們的數據集中的定距變量價格上(我們將價格降低到200美元一瓶一下)。

直方圖Histograms

reviews[reviews['price'] < 200]['price'].plot.hist()

直方圖看起來很簡單,就像一個條形圖。它基本上是!實際上,直方圖是一種特殊的條形圖,它將您的數據拆分爲均勻間隔,並顯示每個條形區域中有多少行。唯一的分析差異是,每個條形代表不是代表單個值,而是代表一個區間取值範圍

然而,直方圖有一個主要缺點(之前我們篩選小於200美元的原因)。因爲它們將空間分成均勻間隔[在變量price的取值範圍內均勻劃分成幾個範圍相同的區間,然後再進行統計畫圖],所以它們不能很好地處理偏斜的數據

reviews['price'].plot.hist()

這是之前排除大於200美元葡萄酒的真正原因;其中一些葡萄酒真的很貴!圖表將“增長”以包含它們[擴大取值範圍],從而損害所顯示的其餘數據。

reviews[reviews['price'] > 1500]

從上面顯示結果可以看出,葡萄酒價格高於1500美元的只有3個,數據嚴重傾斜。

有許多方法可以處理偏斜的數據問題;但這些超出了本教程的範圍。最簡單的方法就是:在合理的範圍內篩選數據,刪除不合理的數據。
這種現象在統計學上稱爲偏斜,並且是區間變量中相當常見的現象

直方圖最適用於沒有偏斜的區間變量。它們對於像“points”這樣的序數分類變量也很有效:

reviews['points'].plot.hist()

但是圖表中出現了數據中不存在的取值,它只是表示一個範圍區間。

原文鏈接:Click me

參考鏈接:nominal,ordinal,interval,ratio variable怎麼區分?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章