超全的pandas數據分析常用函數總結(下篇)

2020-12-13 CDA數據分析師

上篇文章中,小編給大家總結了數據分析中pandas這一模塊裡面常用函數的四個部分的內容,分別為導入模塊、創建數據集並讀取、數據查看與數據清洗,現在給大家介紹下篇的內容。

來源 | 凹凸數據

5. 數據預處理

先創建一個data2數據集

data2=pd.DataFrame({ "id":np.arange(102,105), "profit":[1,10,2]})data2

輸出結果:

再創建一個data3數據集

data3=pd.DataFrame({ "id":np.arange(111,113), "money":[106,51]})data3

輸出結果:

5.1 數據的合併

用merge合併

DataFrame.merge(self,right,how =『inner』,on = None)

right指要合併的對象on指要加入的列或索引級別名稱,必須在兩個DataFrame中都可以找到。how決定要執行的合併類型:left(使用左框架中的鍵)、right、inner(交集,默認)、outer(併集)data_new=pd.merge(data,data2,on='id',how='inner') # 默認取交集data_new=pd.merge(data,data2,on='id',how='outer') # 取併集,沒有值的地方填充NaNdata.merge(data2,on='id',how='inner') # 另一種寫法,輸出結果見下方

輸出結果:

data.merge(data2,on='id',how='left') # 使用左框架中的鍵

輸出結果:

用append合併

data.append(data2) # 在原數據集的下方合併入新的數據集

輸出結果:

用join合併

用下面這種方式會報錯:列重疊,且沒有指定後綴,因為上面的數據data和data2都有「id」列,所以需要給id列指明後綴。

data.join(data2) # 會報錯

第一種修改方式:

data.join(data2,lsuffix='_data', rsuffix='_data2')

輸出結果:

第二種修改方式:

data.set_index('id').join(data2.set_index('id'))

輸出結果:

用concat合併

pandas.concat(objs,axis = 0,ignore_index = False,keys = None)

objs:Series,DataFrame或Panel對象的序列或映射。axis:串聯的軸,默認為0,即以索引串聯(豎直拼接);如果為1,則以列串聯(水平拼接)ignore_index:清除現有索引並將其重置,默認為False。key:在數據的最外層添加層次結構索引。data_new=pd.concat([data,data2,data3],axis = 1,keys=['data', 'data2','data3'])data_new

輸出結果:

5.2 設置索引列

data.set_index("id") # 設置id為索引列

輸出結果:

data.reset_index(drop=True) # 重置索引列,並且避免將舊索引添加為列

輸出結果:

5.3 按照特定列的值排序:

按照索引列進行排序:

data.sort_index()

按照money的值進行排序:

data.sort_values(by="money",ascending = True) # ascending默認為True,即升序.

輸出結果:

5.4 分類顯示

如果money列的值>=10, level列顯示high,否則顯示low:

data['level'] = np.where(data['money']>=10, 'high', 'low')data

輸出結果:

5.5 分組標記

data.loc[(data['level']=="high") & (data['origin']=="China"),"sign"]="棒"data

輸出結果:

5.6 切割數據

對date欄位的值依次進行分列,並創建數據表,索引值為data的索引列,列名稱為year\month\day。

data_split = pd.DataFrame((x.split('-') for x in data['date']), index=data.index, columns=['year','month','day'])data_split

輸出結果:

再與原數據表進行匹配:

pd.concat([data,data_split],axis=1)

輸出結果:

6. 數據提取

下面這部分會比較繞:

loc函數按標籤值進行提取,iloc按位置進行提取pandas.DataFrame.loc() 允許輸入的值:

單個標籤,例如5或』a』,(請注意,5被解釋為索引的標籤,而不是沿索引的整數位置)。標籤列表或數組,例如。[『a』, 『b』, 『c』]具有標籤的切片對象,例如』a』:『f』,切片的開始和結束都包括在內。pandas.DataFrame.iloc()

允許輸入的值:整數5、整數列表或數組[4,3,0]、整數的切片對象1:7

6.1 單行索引

data.loc[6] # 提取索引值為6的那一行(即輸出第7行)

輸出結果:

data.iloc[6] # 提取第7行

輸出結果同上!

6.2 區域索引

6.2.1 用loc取連續的多行

提取索引值為2到索引值為4的所有行,即提取第3行到第5行,注意:此時切片的開始和結束都包括在內。

data.loc[2:4]

輸出結果:

提取「2020-03-13」之前的所有數據

data.loc[:"2020-03-13"]

輸出結果:

6.2.2 用loc取不連續的多行

提取索引值為2和索引值為4的所有行,即提取第3行和第5行。

data.loc[[2,4]]

輸出結果:

6.2.3 用loc取具體值

data.loc[6,"id"]

輸出結果:107

6.2.4 用iloc取連續的多行

提取第3行到第6行

data.iloc[2:6]

輸出結果:

6.2.5 用iloc取連續的多行和多列

提取第3行到第6行,第4列到第5列的值,取得是行和列交叉點的位置。

data.iloc[2:6,3:5]

輸出結果:

6.2.6 用iloc取不連續的多行和多列

提取第3行和第6行,第4列和第5列的交叉值

data.iloc[[2,6],[3,5]]

輸出結果:

6.2.7 用iloc取具體值

提取第3行第7列的值

data.iloc[2,6]

輸出結果:『high』

總結:文字變代碼,數值少1;代碼變文字,數值加1;代碼從0開始計數;文字從1開始計數。

6.3 值的判斷

方式一:判斷origin列的值是否為China

data['origin']=="China"

方式二:判斷department列的值是否為水果

data['department'].isin(['水果'])

輸出結果:

data['department'].isin(['水果']).sum() # 對判斷後的值進行匯總

輸出結果:1

6.4 提取符合判斷的值

data.loc[data['origin'].isin(['Thailand'])] # 將產地是泰國的數據進行提取

輸出結果:

7. 數據篩選

7.1 使用與、或、非進行篩選

將滿足origin是China且money小於35這兩個條件的數據,返回其id、date、money、product、department、origin值。

data.loc[(data['origin']=="China") & (data['money']<35),['id','date','money','product','department','origin']]

輸出結果:

將滿足origin是China或者money小於35這兩個條件之中任意一個條件的數據,返回其id、date、money、product、department、origin值。

data.loc[(data['origin']=="China") | (data['money']<35),['id','date','money','product','department','origin']]

輸出結果:

將滿足origin是China且money不小於10這兩個條件的數據,返回其id、date、money、product、department、origin值。

data.loc[(data['origin']=="China") != (data['money']<10),['id','date','money','product','department','origin']]

輸出結果:

7.2 使用query函數進行篩選

data.query('department=="飲料"') # 單個條件篩選data.query('department==["飲料","零食"]') # 多個條件篩選

輸出結果:

7.3 對結果進行計數求和

data.query('department=="飲料"').count() # 對飲料類型的數據進行篩選後計數data.query('department=="飲料"').money.count() # 對篩選後的數據按照money進行計數

輸出結果:2

data.query('department=="飲料"').money.sum() # 在篩選後的數據中,對money進行求和

輸出結果:9.0

8. 數據匯總

8.1 以department屬性對所有列進行計數匯總

data.groupby("department").count()

輸出結果:

8.2 以department屬性分組之後,對id欄位進行計數匯總

data.groupby("department")['id'].count()

輸出結果:

8.3 以兩個屬性進行分組計數

data.groupby(["department","origin"]).count()

輸出結果:

8.4 以department屬性進行分組匯總並計算money的合計與均值

data.groupby("department")['money'].agg([len, np.sum, np.mean])

輸出結果:

9. 數據統計

9.1 數據採樣

pandas.DataFrame.sample(n = None,replace = False,weights = None)

n:樣本數replace:樣本有無更換(有無放回)(默認不放回)weights:權重data.sample(3,replace=True,weights=[0.1,0.1,0.2,0.2,0.1,0.1,0.1,0.1,0,0])

輸出結果:

9.2 描述性統計

data.describe().round(2).T # round表示小數位數,T表示轉置(這一函數之前提及過)

輸出結果:

9.3 計算標準差

data['money'].std()

輸出結果:18.14754345175493

9.4 計算協方差

data.cov()

輸出結果:

9.5 相關性分析

data.corr()

輸出結果:

相關焦點

  • 超全的pandas數據分析常用函數總結:下篇
    為了更好地學習數據分析,我對於數據分析中pandas這一模塊裡面常用的函數進行了總結。整篇總結,在詳盡且通俗易懂的基礎上,我力求使其有很強的條理性和邏輯性,所以製作了思維導圖,對於每一個值得深究的函數用法,我也會附上官方連結,方便大家繼續深入學習。
  • 超全的pandas數據分析常用函數總結:上篇
    為了更好地學習數據分析,我對於數據分析中pandas這一模塊裡面常用的函數進行了總結。整篇總結,在詳盡且通俗易懂的基礎上,我力求使其有很強的條理性和邏輯性,所以製作了思維導圖,對於每一個值得深究的函數用法,我也會附上官方連結,方便大家繼續深入學習。
  • 超全的pandas數據分析常用函數總結(上篇)
    來源 | 凹凸數據為了更好地學習數據分析,我對於數據分析中pandas這一模塊裡面常用的函數進行了總結。整篇總結,在詳盡且通俗易懂的基礎上,我力求使其有很強的條理性和邏輯性,所以製作了思維導圖,希望能夠幫助到大家深入了解與學習相關函數的知識點。
  • 數據分析之Pandas變形操作總結
    Pandas中提供了各種選項,下面介紹常用參數:① aggfunc:對組內進行聚合統計,可傳入各類函數,默認為'mean'pd.pivot_table(df,index='School'highlight=stack#pandas.DataFrame.stack2). unstack:stack的逆函數,功能上類似於pivot_table。表達式:DataFrame.unstack(self,level = -1,fill_value = None)
  • 數據分析之Pandas
    Pandas 納入了大量庫和一些標準的數據模型,pandas提供了大量能使我們快速便捷地處理數據的函數和方法。所以下面首先介紹pandas最常用的2種基本數據格式[1],然後說明如何從文件中導入數據[2],最後總結了一些最常用的函數[3]。因為pandas有一些迷惑的用法,即使我這種常用的老玩家,曾經一度也有很多使用上的困惑,這裡也將一起手撕。
  • 數據分析之Pandas合併操作總結
    highlight=combine#pandas.DataFrame.combine(3)combine_first方法這個方法作用是用df2填補df1的缺失值,功能比較簡單,但很多時候會比combine更常用,下面舉兩個例子:df1 = pd.DataFrame({'A': [None, 0],
  • Python學習指南| 快速入門Pandas數據分析技巧
    它能完成許多任務,為數據分析提供了廣泛的手段。包括:雖然pandas功能非常強大,但它不能為整個數據科學管道pipeline提供函數。學習在實際數據分析過程中使用pandas兩者之間的區別就像學習如何將一些小枝分成兩半,而不是去森林和砍倒一些樹木。 在詳細討論之前,我們總結這兩種方法。學習獨立於數據分析的pandas library:這種方法主要涉及閱讀,更重要的是探索官方pandas文獻。
  • 十分鐘學習pandas! pandas常用操作總結!
    學習Python, 當然少不了pandas,pandas是python數據科學中的必備工具
  • 十分鐘學習pandas!pandas常用操作總結!
    學習Python, 當然少不了pandas,pandas是python數據科學中的必備工具,熟練使用pandas是從sql boy/girl 跨越到一名優秀的數據分析師傅的必備技能。這篇pandas常用操作總結幫大家回顧下pandas的常用語法,尤其是我們分析數據時常用的方法。
  • 《pandas數據讀取》
    今天呢就給大家分享一個數據分析裡面的基礎內容之pandas數據讀取 數據讀取是進行數據預處理,建模與分析的前提,不同的數據源
  • 數據處理技巧 | 帶你了解Pandas.groupby() 常用數據處理方法
    今天我們繼續推出一篇數據處理常用的操作技能匯總:靈活使用pandas.groupby()函數,實現數據的高效率處理,主要內容如下:pandas.groupby()三大主要操作介紹說到使用Python進行數據處理分析,那就不得不提其優秀的數據分析庫-Pandas,
  • pandas讀取表格後的常用數據處理操作
    pandas讀取表格後的一些常用數據處理操作。這篇文章其實來源於自己的數據挖掘課程作業,通過完成老師布置的作業,感覺對於使用python中的pandas模塊讀取表格數據進行操作有了更深層的認識,這裡做一個整理總結。
  • Python數據分析之pandas數據讀寫
    本節將學習pandas從多種存儲媒介(比如文件和資料庫)讀取數據的工具,還將學到直接將不同的數據結構寫入不同格式文件的方法,而無需過多考慮所使用的技術。本節的主要內容為pandas的多種I/O API函數,它們為大多數常用格式的數據作為DataFrame對象進行讀寫提供了很大便利。
  • 整理了25個Pandas數據分析的實用技巧
    /blob/master/top_25_pandas_tricks.ipynbpandas是Python的一個數據分析庫,提供如DataFrame等十分容易操作的數據結構,是近年做數據分析時不可或缺的工具之一。
  • pandas操作excel全總結
    pandas是基於Numpy創建的Python包,內置了大量標準函數,能夠高效地解決數據分析數據處理和分析任務,pandas支持多種文件的操作,比如Excel,csv,json,txt 文件等,讀取文件之後,就可以對數據進行各種清洗、分析操作了。
  • Pandas的函數應用及映射方法
    運用的函數可以是numpy中的函數,也可以是匿名函數或自定義的函數。· 直接使用numpy的函數# 根據指定函數進行一一映射<<< se=pd.Series({'a':-1,'b':2,'c':-3,'d':4})<<< sea -1b 2c -3d 4dtype: int64# 直接使用numpy的函數,不常用 <<< se.map
  • python數據分析之pandas常用命令整理
    pandas提供了大量能使我們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成為強大而高效的數據分析環境的重要因素之一。導入pandas庫:import pandas as pd導入Series, DataFrame:from pandas import Series, DataFramepandas常用命令讀取excel文件:df=pd.read_excel(fpath,sheet_name=name,usecols=
  • 圖解四個實用的pandas函數!
    作者:Baijayanta Roy來源:towardsdatascience編譯&內容補充:早起Python在用python進行機器學習或者日常的數據處理中,pandas是最常用的Python庫之一,熟練掌握pandas是每一個數據科學家的必備技能
  • 用Pandas做數據清洗的常用操作!
    pandas數據清洗的乾貨作為一名數據分析師,每天都在完成各種數據分析需求,其中數據清洗是必不可少的一個步驟。過濾掉缺失值所在行在過濾之前,首先要分析缺失比例的大小,其基礎在於判斷各個值是否為空,pandas提供了4個相關API,包括這四個函數用法也非常顯然了,前兩個用於判斷各元素是否為空,後兩個則用於判斷各元素是否非空。
  • 圖解4個實用的Pandas函數!
    在用Python進行機器學習或者日常的數據處理中,Pandas是最常用的Python庫之一