pandas可以做的不僅僅是加載和轉換數(shù)據,它還可以可視化數(shù)據奖磁。比起一大堆的matplotlib代碼权她,使用pandas內置的plot 函數(shù)繪圖更簡潔。
下面通過簡單的例子掌握pandas基本的繪圖方法痒蓬。
了解數(shù)據
數(shù)據源來自kaggle-葡萄酒雜志評論拱雏。
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
# 葡萄酒雜志評論數(shù)據
reviews = pd.read_csv("kaggle/winemag-data_first150k.csv", index_col=0)
head = reviews.head(3)
柱形圖
柱形圖可以說是最簡單的數(shù)據可視化。通過柱子來表現(xiàn)數(shù)據的高度媳维,進而比較不同數(shù)據之間的差異酿雪,一眼可以看到數(shù)據量的大小對比。在本例子中展現(xiàn)top10葡萄酒產量的省份對比
reviews['province'].value_counts().head(10).plot.bar()
從上圖中可以看出California的產量遠遠高于世界其他省份的產量侄刽,我們可能會問指黎,California葡萄酒占總葡萄酒的百分比是多少?這個柱形圖告訴我們絕對值,但知道相對比例更有用州丹。
(reviews['province'].value_counts().head(10)/len(reviews)).plot.bar()
從上圖可以得知California出產的葡萄酒幾乎占葡萄酒雜志評論的三分之一醋安。
柱形圖非常靈活:高度可以表示任何東西,只要它是一個數(shù)字。每個欄可以代表任何東西茬故,只要它是一個分類盖灸。
上例的中省份分類是一個定類數(shù)據(沒有內在固有大小或高低順序),還有一種分類數(shù)據是定序數(shù)據,它相對于定類數(shù)據類型來說存在一種程度有序現(xiàn)象,例如下例中葡萄酒不同評分的評論數(shù)量磺芭。
reviews['points'].value_counts().sort_index().plot.bar()
從上圖可看到赁炎,每個葡萄酒的總分都在80到100分之間。有20個分數(shù)值類別钾腺,柱狀圖剛好可以完全展示這些值徙垫。如果評分是0-100呢?恐怕無法完全展示每個類別的情況,這時放棒,我們需要使用折線圖姻报。
折線圖
reviews['points'].value_counts().sort_index().plot.line()
面積圖
當只繪制一個變量時,面積圖和折線圖之間的區(qū)別主要是可視化的间螟。在這種情況下吴旋,它們可以互換使用。
reviews['points'].value_counts().sort_index().plot.area()
直方圖
直方圖是用一系列等寬不等高的長方形來繪制厢破,寬度表示數(shù)據的范圍間隔荣瑟,高度表示頻數(shù)或者頻率。
查看葡萄酒價格分布
reviews['price'].plot.hist()
從上圖看價格主要分布在0~200,由于高位價格偏差摩泪,導致價格區(qū)間過大笆焰,看不出問題。
len(reviews[reviews['price'] > 200])/len(reviews)
通過計算见坑,發(fā)現(xiàn)價格在200以上的占比只有 0.005嚷掠,可以忽略,處理一下數(shù)據偏差,重新查看price<200時的價格數(shù)量分布
reviews[reviews['price'] < 200]['price'].plot.hist()
總結
柱形圖 | 折線圖 | 面積圖 | 直方圖 |
---|---|---|---|
df.plot.bar() | df.plot.line() | df.plot.area() | df.plot.hist() |
適合展示少量的定類數(shù)據荞驴。 | 適用于有序數(shù)據和區(qū)間數(shù)據 | 同折線圖 | 適合展示區(qū)間數(shù)據 |
相關資料
https://www.kaggle.com/residentmario/univariate-plotting-with-pandas