Python學習筆記---2
今天主要分享的內容是python的可視化繪圖方面(seaborn的使用),以及對數據處理的一些補充,話不多說,進入正題!
眾所周知,圖表在數據分析中扮演著非常重要的角色,一張專業,美觀的圖表能更好的展示數據傳達的信息,python中的Matplotlib包雖然能實現各種形式的圖表,但在快速展現更多的細節方面顯得複雜,今天介紹Seaborn是定製主題和高級界面控制的Matplotlib擴展包,能讓繪圖變得更輕鬆,我們仍然以』保溫杯評價數據『為基礎,在實戰練習中表現seaborn的常用功能。
主要功能展現分為四個方面:
seaborn的調色板,數據分布展示,線性關係展示,分類數據展示、
---在繪圖前需導入seaborn包
import seaborn as sns
【seaborn調色板】
seaborn默認的主題顏色有6種:deep, muted, pastel, bright, dark, 和 colorblind
通過下面代碼直接傳入即可:
----使用hls可設置多種分類顏色:
----設置顏色的亮度和飽和度:
----使用husl可使各個顏色的亮度和飽和度保持一致
---- 使用分類調色板,在繪製分類條形圖的時候經常用到
---- 通過自定義顏色的名稱來設置顏色組
---- 設置漸變色:
【數據分布展示】
在數據建模分析中,對數據分布進行描述能得到一些探索性的結論。
在seaborn中繪製分布圖主要用displot,kdeplot,jointplot,pairplot這幾個函數
---- 單變數的分布:displot,kdeplot
sns.set()中的style是設置主題的,有五個預設好的主題: darkgrid , whitegrid , dark , white ,和 ticks 默認: darkgrid。palette是設置調色板(deep, muted, pastel, bright, dark, 和 colorblind)。
sns.displot中有兩個參數:kde是顯示觀察點上繪製的垂直刻度,rug是繪製密度曲線。
如果我們在seaborn中使用kdeplot()函數,我們得到相同的曲線,看起來分布也更直觀。
---- 雙變數的分布: jointplot
用jointplot繪製雙變數的分布可展現兩個變數的相關性,以及各自的數據分布情況。
參數kind可改變相關性的表現形式,例如散點圖,蜂窩狀,核密度
另一種用法可繪製出蜂窩狀的散點圖,適用於較大的數據量。
還有一種核密度圖也可展示雙變數的關係:
-----展現數據集中成對的關係:pairplot
使用pairplot可創建一個矩陣,來展現Dataframe中各對變數之間的關係
可自定義選擇某幾個變數:
也可繪製直方圖:用到FacetGrid函數:
除了上述幾種,箱線圖也是數據分布描述的常用工具,並且用於異常值的分析:
繪製箱線圖用的是boxplot:
----繪製分類別的箱線圖:
----增加一個變數,進行多維展示:
【線性關係展示】
regplot 和 lmplot是用來展示兩個變數之間線性關係的
---- 繪製簡單的散點圖:
看起來兩者繪製出來的效果差不多,不過它們也是有區別的:
regplot()以各種格式接受x和y變數,包括numpy數組、Pandas的Series列或DataFrame對象的變數引用;不一樣的是,lmplot()將數據集作為一個必需的參數,而x和y變數必須指定為字元串。regplot()可以看做是擁有lmplot()特徵的子集,下面的圖表主要用lmplot展示。
----增加一個分類變數,展現三個變數的交互
----再增加一個變數,形成一個矩陣圖,進行多維展示:
【分類數據的繪製】
主要用到的函數:stripplot,swarmplot,barplot,countplot
----繪製分類散點圖:stripplot,swarmplot
增加一個分類變數:
x軸與y軸的轉換:便於更好的展示:
----繪製條形圖:barplot,countplot
在barplot上是默認顯示均值,當在每個類別中有多個觀察值時,它還使用引導來計算估計周圍的置信區間,並繪製使用誤差條。
如果只是統計每個類別的統計量,可使用countplot:
設置x軸為y軸,可繪製水平條形圖:
接下來介紹一個多功能函數:factorplot
使用factorplot()的主要優點是很容易調用"facet"展開更多其他分類變數,通過增加和改變裡面的參數,任何一種圖形都可以畫出來:
--- 繪製多維度的箱線圖:
這個函數的參數如下:
seaborn.factorplot(x=None, y=None, hue=None, data=None, row=None, col=None, col_wrap=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, order=None, hue_order=None, row_order=None, col_order=None, kind=point, size=4, aspect=1, orient=None, color=None, palette=None, legend=True, legend_out=True, sharex=True, sharey=True, margin_titles=False, facet_kws=None, **kwargs)
- x,y,hue 數據集變數 變數名
- date 數據集 數據集名
- row,col 更多分類變數進行平鋪顯示 變數名
- col_wrap 每行的最高平鋪數 整數
- estimator 在每個分類中進行矢量到標量的映射 矢量
- ci 置信區間 浮點數或None
- n_boot 計算置信區間時使用的引導迭代次數 整數
- units 採樣單元的標識符,用於執行多級引導和重複測量設計 數據變數或向量數據
- order, hue_order 對應排序列表 字元串列表
- row_order, col_order 對應排序列表 字元串列表
- kind : 可選:point 默認, bar 柱形圖, count 頻次, box 箱體, violin 提琴, strip 散點,swarm 分散點(具體圖形參考文章前部的分類介紹)
- size 每個面的高度(英寸) 標量
- aspect 縱橫比 標量
- orient 方向 "v"/"h"
- color 顏色 matplotlib顏色
- palette 調色板 seaborn顏色色板或字典
- legend hue的信息面板 True/False
- legend_out 是否擴展圖形,並將信息框繪製在中心右邊 True/False
- share{x,y} 共享軸線 True/False
- facet_kws FacetGrid的其他參數 字典
seaborn就先分享到這,這裡只是寫了一些常用功能,小夥伴們想要了解更多,可以去看看
『未禾』同學的:
未禾:Seaborn(sns)官方文檔學習筆記(第一章 藝術化的圖表控制)我也是參考裡面的代碼進行練習的~~~~
接下來補充一下關於數據處理方面的東西:
1.重複值的處理:
----判斷索引值是否唯一:
----返回一個欄位中非重複值:
----去除重複值:drop.duplicates()
subset()是選擇需要去重的欄位,keep是選擇保留第一個出現的值還是最後一個,或者都不保留,刪除只要是重複值的數據。
2.字元串的提取操作:
自定義一個函數cut_text, 並用apply將這個函數應用到Dataframe中
3. 分箱操作---連續性變數轉為類別性變數:pd.cut()
---統計分箱後每個類別的count數:
也可用groupby函數進行分類別統計:
----篩選made_area中的中國大陸,進行統計:
用isin篩選出』中國大陸『,並繪製條形圖
---- 』中國大陸『與』其它『的對比:
先篩選出數據,再進行分組,這裡用unstack()函數將made_area移動到列標籤,便於分組後的繪圖:
----- 也可繪製直方圖進行對比:
----繪製weight_label的百分比柱狀圖:
4. 變數之間的相關性分析:
-----用corr()函數計算變數之間的相關係數:
----利用seaborn繪製相關性矩陣熱力圖:
----計算變數的峰度及兩個變數的相關係數:
5. 訓練集和測試集數據的抽樣處理:
----先對原始數據設置id的索引欄位:
----用隨機抽樣的方法提取訓練集數據:
----創建測試集數據,用去重的辦法實現原始數據與訓練集數據的差集處理:
----- 訓練集和測試集數據的合併操作:
---- 也可只選取自定義的欄位進行合併:
6. 缺失值的判斷:
----判斷每個欄位是否存在缺失值:
----統計缺失值欄位的空值個數:
7. 數據的標準化轉換:
----平方根標準化:標準化後的數據已經近似服從正態分布了。
----對數標準化:log轉換
----將分類型變數轉換為連續性變數:
今天的筆記就到這裡,碼了2個小時,先休息一會。。。。
後續會分享有關數據建模的心得體會。。。
推薦閱讀:
※pycharm Python console 路徑設置的問題?
※哪裡能找到 Python 視頻教程地址?
※Headers設置之Accept-Encoding
※進程間通信和線程間通信的區別?
※為什麼使用Python