Pandas數據分析:快速圖表可視化各類操作詳解+實例代碼(一)
highlight: a11y-light
我正在參加「掘金·啟航計劃」
前言
一般我們做數據挖掘或者是數據分析,再或者是大數據開發提取數據庫裏面的數據時候,難免只能拿着表格數據左看右看,內心總是希望能夠根據自己所想立馬生成一張數據可視化的圖表來更直觀的呈現數據。而當我們想要進行數據可視化的時候,往往需要調用很多的庫與函數,還需要數據轉換以及大量的代碼處理編寫。這都是十分繁瑣的工作,確實只為了數據可視化我們不需要實現數據可視化的工程編程,這都是數據分析師以及擁有專業的報表工具來做的事情,日常分析的話我們根據自己的需求直接進行快速出圖即可,而Pandas正好就帶有這個功能,當然還是依賴matplotlib庫的,只不過將代碼壓縮更容易實現。下面就讓我們來了解一下如何快速出圖。
Pandas數據分析系列專欄已經更新了很久了,基本覆蓋到使用pandas處理日常業務以及常規的數據分析方方面面的問題。從基礎的數據結構逐步入門到處理各類數據以及專業的pandas常用函數講解都花費了大量時間和心思創作,如果大家有需要從事數據分析或者大數據開發的朋友推薦訂閲專欄,將在第一時間學習到Pandas數據分析最實用常用的知識。此篇博客篇幅較長,涉及到處理文本數據(str/object)等各類操作,值得細讀實踐一番,我會將Pandas的精華部分挑出細講實踐。博主會長期維護博文,有錯誤或者疑惑可以在評論區指出,感謝大家的支持。
一、基礎繪圖:plot
Series和DataFrame上的plot方法只是plt.plot()的簡單包裝,這裏我們用一段實際數據來進行可視化展示:
這是一段真實地鐵通行量特徵數據,我們用此數據進行展示:
df_flow['客流量'].plot()
如果索引由日期組成,則調用gcf().autofmt_xdate()方法可以很好地格式化x軸。
在DataFrame上,plot()可以方便地用標籤繪製所有列:
df_flow_mark[['濕度','風級','降水量']].plot()
可以使用plot()中的x和y關鍵字繪製一列與另一列的對比,比如我們想要使用星期六的客流量和星期日的客流量作對比:
df_flow_7=df_flow[df_flow['日期']=='星期日'].iloc[:7,:]
df_flow_7.rename(columns={'客流量':'星期日客流量'},inplace=True)
df_flow_6=df_flow[df_flow['日期']=='星期六'].iloc[:7,:]
df_flow_6.rename(columns={'客流量':'星期六客流量'},inplace=True)
df_compare=pd.concat([columns_convert_df(df_flow_7['星期日客流量']),columns_convert_df(df_flow_6['星期六客流量'])],axis=1)
df_compare.plot(x='星期日客流量',y='星期六客流量')
二、底圖板塊
根據Pandas包裝後的kind關鍵字我們梳理一下底圖種類:
也可以使用DataFrame.plot方法創建這些其他繪圖
``` df.plot.area df.plot.barh df.plot.density df.plot.hist df.plot.line df.plot.scatter df.plot.bar df.plot.box df.plot.hexbin df.plot.kde df.plot.pie
``` 除了這些類型,還有DataFrame.hist()和DataFrame.boxplot()方法,它們使用單獨的接口。
最後,pandas中有幾個繪圖功能。以Series或DataFrame作為參數的繪圖。其中包括:
- Scatter Matrix
- Andrews Curves
- Parallel Coordinates
- Lag Plot
- Autocorrelation Plot
- Bootstrap Plot
- RadViz
分別是: - 散射矩陣 - 安德魯斯曲線 - 平行座標 - 滯後圖 - 自相關圖 - 引導圖 - 拉德維茲圖
繪圖也可以用錯誤條或表格進行裝飾。
1.條形圖
df_flow_mark['客流量'].plot(kind='bar')
df_flow_mark['客流量'].plot.bar()
多個標籤圖表也可以一齊繪出:
df_flow_mark[['風級','降水量']].plot.bar()
要生成堆疊條形圖,傳遞stacked=True:
df_flow_mark[['風級','降水量']].plot.bar(stacked=True)
長久看這個maatplotlib的默認地圖有點疲勞了,我這裏換個主題,還是一樣的效果不礙事。
要獲得水平條形圖可以使用barh方法:
df_flow_mark[['風級','降水量']].plot.barh(stacked=True)
2.直方圖
可以使用DataFrame.plo.hist()和Series.plot.hist()方法繪製直方圖.
df4 = pd.DataFrame(
{
"a": np.random.randn(1000) + 1,
"b": np.random.randn(1000),
"c": np.random.randn(1000) - 1,
},
columns=["a", "b", "c"],
)
plt.figure();
df4.plot.hist(alpha=0.5)
直方圖可以使用stacked=True進行疊加。可以使用bins關鍵字更改bin大小。
df4.plot.hist(stacked=True, bins=20);
可以傳遞matplotlib hist支持的其他關鍵字。例如,水平和累積直方圖可以通過orientation='horizontal'
和cumulative=True
繪製。
有關詳細信息,可以參閲hist方法和matplotlib hist文檔。\ 現有接口DataFrame.hist,但仍然可以使用hist繪製直方圖
plt.figure();
df_flow_mark['風級'].hist();
DataFrame.hist()可以在多個子地塊上繪製列的直方圖:
plt.figure();
df_flow_mark[['風級','降水量']].diff().hist(color="k", alpha=0.5, bins=50);
可以指定by關鍵字來繪製分組直方圖:
``` data = pd.Series(np.random.randn(1000))
data.hist(by=np.random.randint(0, 4, 1000), figsize=(6, 4)); ```
此外,還可以在DataFrame.plot.hist()中指定by關鍵字:
data = pd.DataFrame(
{
"a": np.random.choice(["x", "y", "z"], 1000),
"b": np.random.choice(["e", "f", "g"], 1000),
"c": np.random.randn(1000),
"d": np.random.randn(1000) - 1
}
)
data.plot.hist(by=["a", "b"], figsize=(10, 5));
點關注,防走丟,如有紕漏之處,請留言指教,非常感謝
以上就是本期全部內容。我是fanstuck ,有問題大家隨時留言討論 ,我們下期見
- 一文速學數模-集成預測模型Boost(提升方法)原理以及框架 模型速覽
- Python-sklearn機器學習之旅:我的第一個機器學習實戰項目
- 斯皮爾曼相關(spearman)相關性分析一文詳解 python實例代碼
- sklearn預測評估指標計算詳解:準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1score
- 機器學習:性能度量篇-Python利用鳶尾花數據繪製P-R曲線
- Pandas數據分析:快速圖表可視化各類操作詳解 實例代碼(一)
- Pandas數據分析:快速圖表可視化各類操作詳解 實例代碼(二)
- Pandas數據分析:處理文本數據(str/object)各類操作 代碼一文詳解(一)
- 決策樹(Decision Tree)算法詳解及python實現
- PCA(主成分分析法)原理以及應用 代碼實現
- 機器學習:性能度量篇-Python利用鳶尾花數據繪製ROC和AUC曲線
- 深度學習面試常見問題
- 數據預處理歸一化詳細解釋
- 一文速學-熵權法實戰確定評價指標權重
- 機器學習:基於概率的樸素貝葉斯分類器詳解--Python實現以及項目實戰
- 機器學習:貝葉斯分類器詳解(一)-貝葉斯決策理論與樸素貝葉斯
- 秩和比綜合評價法(RSR)詳解及Python實現和應用
- SVM(Support Vector Machines)支持向量機算法原理以及應用詳解 Python代碼實現
- 機器學習:基於概率的樸素貝葉斯分類器詳解--Python實現以及項目實戰
- 機器學習:性能度量篇-Python利用鳶尾花數據繪製P-R曲線