深入淺出Pandas數據分析
大家好,我是Peter~
《深入淺出Pandas數據分析》第一版本終於可以和大家見面咯!文末有資料領取方式
從4月24號的第一篇Pandas文章:《一切從爆炸函數開始》,到昨天8月5號的《圖解Pandas的軸旋轉函數:stack和unstack》,總共歷時103天,讓Pandas來見證吧:
兩行代碼告訴你兩個日期之間的時間差,這就是Pandas👏
什麼是Pandas
什麼是Pandas?引用一段來自Pandas中文官網的解釋:
Pandas 是 Python的核心數據分析支持庫,提供了快速、靈活、明確的數據結構,旨在簡單、直觀地處理關係型、標記型數據。Pandas 的目標是成爲 Python 數據分析實踐與實戰的必備高級工具,其長遠目標是成爲最強大、最靈活、可以支持任何語言的開源數據分析工具
簡單解釋:Pandas是Python的第三庫中數據處理和分析最厲害的一個庫!
Pandas能處理什麼數據
Pandas是一個強大的數據分析庫,那它能夠處理哪些類型的數據?
- 類似SQL和Excel的表格型數據
- 有序和無序的時間序列數據,常用在金融領域
- 帶行列標籤的矩陣數據,因爲Pandas本身也是基於Numpy開發
103天我寫了什麼
這103天總共更新了16篇關於Pandas的文章:
第一篇:一切從爆炸函數開始
這篇文章主要講解的是Pandas中一個函數的使用:explode
它實現的是類似hive中explode函數的功能:從左邊的信息統計出右邊的信息
第二篇:Series類型數據
Pandas中有兩種數據類型,其中一種就是Series。
Series 是一維數組結構,它僅由index(索引)和value(值)構成的。
第三篇:創建DataFrame:10種方式任你選
第三篇文章介紹的是Pandas中最常用的一種數據結構:DataFrame 的10種創建方式。
DataFrame 是將數個 Series 按列合併而成的二維數據結構,每一列單獨取出來是一個 Series ;除了擁有index和value之外,還有column
寫完之後纔想起來,漏了一種方式:通過剪貼板直接創建。當我們在剪貼板中準備好了數據,運行下面的語句就可以直接創建:
df = pd.read_clipboard()
df
第四篇:各種騷氣的Pandas取數操作
前兩篇文章介紹了Series和DataFrame兩種數據結構的創建,那麼接下來介紹的是:如何從中取數我們想要的數據。
Pandas中取數的方式真的是五花八門,所以總共花了3篇文章。第四篇文章中的方法主要是:
第五篇:贊!五花八門的Pandas篩選數據
也是關於Pandas中取數的文章,主要介紹的是:
第六篇:最後一篇:玩轉Pandas取數
最後一篇介紹如何在Pandas中取數,重點介紹了3對函數:它們使用的時候有細微的區別
第七篇:數據處理的基石:數據探索
在我們拿到數據導入到Pandas,進行後續的處理之前,我們需要先查看下數據的基本信息,對這份數據有一個初步的瞭解,一般包含如下信息:
第八篇:Pandas數據類型操作
Pandas在處理數據的時候,保證數據類型的準確非常重要,第七篇文章主要是介紹了3種常見的數據類型轉換方法+數據類型篩選的方法:
- 使用astype()函數進行強制類型轉換
- 通過自定義函數來進行數據類型轉換
- 使用Pandas提供的函數如to_numeric()、to_datetime()等進行轉化
- select_dtypes函數的使用
第九篇:圖解Pandas的groupby機制
groupby分組統計是工作和數據處理工程中常見的一種方法。這篇文章詳解了groupby的內部機制。
第十篇:圖解Pandas的排名rank機制
本篇文章主要是類比SQL中的排名和窗口函數,介紹瞭如何利用Pandas的rank函數來實現:
- row_number:順序排名,rank函數的中的method=first
- rank:跳躍排名,rank函數的中的method=min
- dense_rank:密集排名,rank函數的中的method=dense
第十一篇:圖解Pandas的排序機制sort_values
有了排名,必然也要來實現一下排序。排序sort_values函數在平時使用的頻率是非常高的,經常需要對銷售數據做TopN分析,就需要分組統計數據之後再進行一下排序。
第十二篇:圖解Pandas的缺失值處理
一般情況下,數據都不是完美的。需要我們進行前期的各種處理操作,對缺失值的處理就是其中之一。
本篇文章主要是介紹了利用Pandas處理缺失值,包含:對缺失值的判斷、刪除缺失值、填充缺失值:
- df.isnull()、df.notnull():兩個函數互爲取反
- df.isna():等同於df.isnull()
- df.dropna():刪除缺失值
- df.fillna():填充缺失值
第十三篇:圖解Pandas重複值處理
數據中存在重複值也是常有的情況,本篇文章中主要是介紹了重複值處理的兩種方式:
- duplicated():判斷是否有重複值
- drop_duplicates() :刪除重複值
第十四篇:挑戰SQL:圖解Pandas的數據合併merge
在實際的業務需求中,我們的數據可能存在於不同的庫表中,SQL可以通過各種join來實現,Pandas中主要是通過merge函數來實現的。
在這篇文章中詳細介紹了merge的各個參數如何使用:
pd.merge(left, # 待合併的2個數據框
right,
how='inner', # ‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’
on=None, # 連接的鍵,默認是相同的鍵
left_on=None, # 指定不同的連接字段:鍵不同,但是鍵的取值有相同的內容
right_on=None,
left_index=False, # 根據索引來連接
right_index=False,
sort=False, # 是否排序
suffixes=('_x', '_y'), # 改變後綴
copy=True,
indicator=False, # 顯示字段來源
validate=None)
第十五篇:圖解Pandas數據合併:concat、join、append
Pandas中除了常用的merge函數來實現數據合併,還有3個函數也能實現部分的合併功能:concat、join、append;尤其是concat,其實也挺常用的。
concat參數:
pandas.concat(objs, # 合併對象
axis=0, # 合併方向,默認是0縱軸方向
join='outer', # 合併取的是交集inner還是並集outer
ignore_index=False, # 合併之後索引是否重新
keys=None, # 在行索引的方向上帶上原來數據的名字;主要是用於層次化索引,可以是任意的列表或者數組、元組數據或者列表數組
levels=None, # 指定用作層次化索引各級別上的索引,如果是設置了keys
names=None, # 行索引的名字,列表形式
verify_integrity=False, # 檢查行索引是否重複;有則報錯
sort=False, # 對非連接的軸進行排序
copy=True # 是否進行深拷貝
)
join參數:
dataframe.join(other, # 待合併的另一個數據框
on=None, # 連接的鍵
how='left', # 連接方式:‘left’, ‘right’, ‘outer’, ‘inner’ 默認是left
lsuffix='', # 左邊(第一個)數據框相同鍵的後綴
rsuffix='', # 第二個數據框的鍵的後綴
sort=False) # 是否根據連接的鍵進行排序;默認False
append主要參數:
DataFrame.append(
other, # 追加對象
ignore_index=False, # 是否保留原索引
verify_integrity=False, # 檢查行索引是否重複;有則報錯
sort=False)
第十六篇:圖解Pandas的軸旋轉函數stack和unstack
stack和unstack也是一對互爲逆操作的函數,它們二者的作用的是對Pandas的數據軸進行旋轉,二者特點爲:
- stack: 將數據的列columns轉旋轉成行index
- unstack:將數據的行index旋轉成列columns
- 二者默認操作的都是最內層
來自官網的兩張圖來解釋二者的用法:
文章有什麼特色
在寫作的過程中,參考了官網和很多資料,也有自己平時使用的一些心得,同時也模擬了很多數據,總結下幾個特色:
- 案例豐富:每篇文章都是通過模擬來進行說明
- 圖文並茂:文章使用了大量的圖形來解釋函數的使用,更加直觀,加深印象
- 貼近現實:很多模擬數據都是可以直接套用在真實的業務場景中
後續工作
目前寫的內容真的僅僅是Pandas庫的冰山一角,還有很多的內容沒有展開。但是如果讀者能夠認真看完,並且自己實際去運行和理解代碼,相信還是會有很大的收穫,入門pandas必定是問(聽)題(你)不(吹)大(牛)!🐂
後續Pandas的文章會持續更新,這將是一個長期的過程。以後會帶來更多高級使用技巧和案例,幫助讀者掌握Pandas的使用。
領取方式:關注公衆號[尤而小屋],回覆Pandas即可領取