深入淺出Pandas數據分析

深入淺出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即可領取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章