數(shù)據(jù)可視化幾種方法:
import matplotlib.plot as plt;
1)利用matplotlib自身基礎組件
不難看出肥印,matplotlib實際上是一種比較低級的工具。要組裝一張圖標绝葡,你得用它的各種基礎組件才行:數(shù)據(jù)展示(即圖表類型:線性圖深碱、柱狀圖、盒形圖藏畅、散步圖敷硅、等值線圖等 )、圖例愉阎、標題绞蹦、刻度標簽以及其他注解性信息。這是因為要根據(jù)數(shù)據(jù)制作一張完整圖表通常都需要用到多個對象榜旦。在pandas中幽七,我們有行標簽、列標簽以及分組信息溅呢,這也就是說澡屡,要制作一張完整的圖表,原本需要一大堆的matplotlib代碼藕届,現(xiàn)在只需要一兩條簡潔的語句就可以了挪蹭。
2)利用Series和DataFrame的plot的方法
今天的任務中大多數(shù)都用的這種方法。
Series和DataFrame都有一個用于生成各類圖表的plot方法休偶,默認情況下梁厉,他們生成的是線型圖。
Series.plot方法的參數(shù):
? label:用于圖例上標簽;ax:要在其上進行繪制的matplotlib subplot對象词顾,如果沒有設置八秃,則使用當前matplotlib subplot對象;style:將要傳給matplotlib的風格字符串(如:‘ko--’)肉盹;alpha:圖表的填充不透明度(0到1之間)昔驱;kind:可以是‘line’‘bar’‘barh’‘kde’;logy:在Y軸上使用對數(shù)標尺上忍;use_index:將對象的索引用作刻度標簽骤肛;rot:旋轉刻度標簽(0到360度);xticks:用作X軸刻度的值窍蓝;yticks:用作Y軸刻度的值腋颠;xlim:X軸的界限(例如【0,10】)吓笙;ylim:Y軸的界限淑玫;grid:顯示網格線(默認打開)
DataFrame還有一些用于對列進行靈活處理的選項,例如面睛,是要將所有列都繪制到一個subplot中還是創(chuàng)建各自的subplot絮蒿,詳細參數(shù)參加下面:
? ?subplots:將各個DataFrame列繪制到單獨的subplot中
? ?sharex:如果subplot=True,則共用同一個X軸叁鉴,包括刻度和界限土涝;
? ?sharey:如果subplot=True,則共用同一個Y軸亲茅,包括刻度和界限回铛;
? ?figsize:表示圖像大小的元組狗准;
? ?title:表示圖像標題的字符串克锣;
? ?legend:添加一個subplot圖例(默認為True);
? ?sort_columns:以字母表順序繪制各列腔长,默認使用當前列順序
df.plot(kind='bar',stacked=True,alpha =0.5)? # 設置stacked=True即可為DataFrame生成堆積柱狀圖袭祟,這個每行的值就會被堆積在一起。
text.groupby(['Sex','Survived'])['Survived'].count().unstack().plot(kind='bar',stacked='True')
#? ?text.groupby(['Sex','Survived'])['Survived'].count()
Sex? ? ? ?Survived
female? ? ? ?0? ? ? ? ? ? 81
? ? ? ? ? ? ? ? ?1? ? ? ? ? 233
male? ? ? ? ?0? ? ? ? ? ?468
? ? ? ? ? ? ? ? ?1? ? ? ? ? 109
#text.groupby(['Sex','Survived'])['Survived'].count().unstack()捞附;通過unstack()將花括號轉為DataFrame
Survived? ?0? ? ? 1??
Sex
female? ? 81? ? ?233
male? ? ? 468? ? 109
far_sur = text.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False)
text.groupby(['Fare'])#通過Fare列進行分組巾乳,形成多個子DataFrame
text.groupby(['Fare'])['Survived']# 取Survived列的值
text.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False)# 對應Survived列中不同值的數(shù)量,然后降序排列
Fare? ? ?Survived
8.0500? ? ? 0? ? ? ? ? 38
7.8958? ? ? 0? ? ? ? ? 37
13.0000? ? 0? ? ? ? ? 26
7.7500? ? ?0? ? ? ? ? 22
26.0000? ?0? ? ? ? ? 16
? ? ? ? ? ? ? ? ? ? ..
20.2500? 1? ? ? ? ? ? 1
? ? ? ? ? ? ? ? 0? ? ? ? ? ? 1
18.7875? 1? ? ? ? ? ? 1
? ? ? ? ? ? ? ? 0? ? ? ? ? ? 1
15.0500? 0? ? ? ? ? ? 1
3)利用seaborn
import seaborn as? sns
sns.countplot(x='Pclass',hue='Survived',data=text)
同上面兩種方法相比鸟召,非常簡單5ò怼!欧募!
知乎上的文檔:
import seaborn as sns
import matplotlib.plot as plt
%matplotlib inline
titanic = sns.load_dataset('titanic')
sns.barplot(x='class',y='survived',data=titanic)
下面進行解釋:
titanic = sns.load_dataset('titanic')#seaborn內置很多數(shù)據(jù)压状,內置數(shù)據(jù)就可用這種方式進行導入
sns.barplot(x='class',y='survived',data=titanic)#barplot是輸出條形圖,還有countplot、boxplot种冬、violinplot镣丑、regplot、Implot娱两、heatmap等多種圖形方法可以使用莺匠。
1、displot直方圖
通常我們在分析一組數(shù)據(jù)時十兢,首先要看的就是變量的分布規(guī)律趣竣,而直方圖則提供了簡單快速的方式,在seaborn中可以用distplot()實現(xiàn)旱物。
age= titanic['age'].dropna()
sns.distplot(age)
同時我們可以調節(jié)其中的一些參數(shù)期贫,來控制輸出的圖形:‘kde’控制密度估計曲線的參數(shù),默認True异袄,‘bins’控制分布矩形數(shù)量的參數(shù)通砍,通常我們可以增加其數(shù)量,來看更為豐富的信息烤蜕,‘rug’參數(shù)用于控制直方圖中邊際毛毯封孙,通過控制‘reg’是實現(xiàn)毛毯是否顯示。
sns.distplot(age,kde=False,bins=30)
2讽营、barplot條形圖
barplot利用矩陣條的高度反應數(shù)值變量的集中趨勢虎忌,以及使用errorbar功能(差棒圖)來估計變量之間的差值統(tǒng)計(置信區(qū)間)。需要提醒的是barplot()默認展示的是某種變量分布的平均值(橱鹏?)(可以通過參數(shù)修改為max膜蠢、median等)
3、countplot計數(shù)圖
可以將它認為一種應用到分類變量的直方圖莉兰,也可以認為i它是用于比較類別間計數(shù)差挑围。當年想要顯示每個類別中的具體觀察數(shù)量時,countplot很容實現(xiàn)糖荒。
4杉辙、stripplot/swarmplot散點圖
在seaborn中有兩種不同的分類散點圖。stripplot()使用的方法是用少量的隨機“抖動”調整分類軸上的點的位置捶朵,swarmplot表示的是帶分布屬性的散點圖蜘矢。
5、boxplot箱線圖
boxplot是一種用作顯示一組數(shù)據(jù)分散情況的統(tǒng)計圖综看。他能顯示出一組數(shù)據(jù)的最大值品腹、最小值、中位數(shù)及上下四分位數(shù)红碑。因其形狀如箱子而得名舞吭,這意味著箱線圖中每個值對應于數(shù)據(jù)中的實際觀察值。可以通過‘order’和‘hue_order’參數(shù)镣典,我們可以控制x軸展示的順序兔毙,通過linewidth參數(shù)控制線條的粗細。
6兄春、violinplot小提琴圖
其實是箱線圖與核密度圖的結合澎剥,箱線圖展示了分為數(shù)的位置,小提琴圖則展示了任意位置的密度赶舆,通過小提琴圖可以知道哪些位置的密度較高哑姚。
7、regplot/Implot回歸線
seaborn中利用regplot()和lmplot()來進行回歸芜茵,確定線性關系叙量,他們密切相關,共享核心功能九串,但也有明顯不同绞佩。
lmplot()可以設置hue,進行多個類別的顯示,而regplot()是不支持的。這里我們通過設置hue=‘species’友酱,來進行分類別地展示≈饨唬‘col’參數(shù)對不同類別分開繪制,‘fit_reg’參數(shù)可以控制是否顯示擬合的直線扑馁,‘ci’參數(shù)控制是否顯示置信區(qū)間涯呻。
8、heatmap熱力圖
熱力圖通常用來表示特征之間的相關性腻要,一般通過顏色的深淺來表示數(shù)值的大小或者相關性的高低复罐。