Python數據分析常用函數及參數詳解,可以留著以備不時之需

2021-01-08 社會愛智者521

利用Python進行數據分析最核心的庫就是Pandas,可以說,掌握了Pandas庫,Python數據分析就屬於中階水平了。

在《一次簡單、完整的Python數據分析,讓我們不再害怕Python!》一文中我們介紹了Python進行數據分析全流程的幾個主要函數。但由於實際中的分析需求可能比較複雜,就要求對數據做更加複雜的處理。

所以,我們有必要提前準備一些常用的函數,這些函數不用全部會,知道有這些函數,並做到在我們要實現數據處理邏輯時,知道有什麼函數可用就夠了。

為了便於學習這些函數,本文按照各自類型進行了分門別類。

01幾點注意事項

在介紹具體的函數時,說幾點注意事項:

初學時最好習慣於寫參數名稱;根據函數的作用去理解它可以作用於哪種對象,又會返回何種對象;函數(也就是對象的方法)需要有括號,查看對象屬性沒有括號。axis=i,表示i維進行變化,而其他維度不變。例如,當i=0時,就是說行維度值進行變化,其它維度不變,這就表明是按列進行處理。

02常用函數

為了便於我們掌握,我們結合數據分析的流程和其內部函數的作用,將其分為以下幾類,具體見下圖。

(1)對象創建

pandas中有兩種重要對象:Series和DataFrame。前者類似一維數組,後者可看成Excel中的表格數據。後文將用df表示任意的DataFrame對象,用s表示任意的Series對象,用pd表示pandas庫。

pd.Series(data=, index=, dtype=,……)

#data可為列表、字典等多種類型,其餘參數為可選項

pd.DataFrame(data=, index=, columns=,……)

#data可為字典、數組等多種類型數據讀取

(2)數據讀取

數據讀取重點掌握以下三種。

pd.read_table(filename, sep='\t', header=0, index_col=None,……)

#要讀取的文件名稱是必須輸入的參數,其餘為可選項,header為要選取哪一行作為列名稱,默認第一行

pd.read_csv(filename, sep=',', header=0, index_col=None,……)

#與上面的函數用法大致相同

pd.read_excel(filename,sheet_name=0, header=0,index_col=None,……)

#從Excel文件讀入數據,增加了sheet_name參數的選項,代表要讀取第幾個工作表的數據

(3)數據描述

在讀完數據後,我們要先查看數據的整體情況。

df.info()

#查看數據框基本信息,包含多少行和列,每列什麼類型等等

df.descirbe()

#查看數據的整體描述,統計的是數值型列

df.head(n)

#查看前n行

df.tail(n)

#查看後n行

df.count(axis=0)

#非空值個數,返回Series,0為按列統計,1為按行統計

df.isna()

#返回每個元素是否是缺失值的bool數據框

df.isnull()

#返回每個元素是否是空值的bool數據框

df.columns

#返回Index類型的列的集合,因為列名稱是屬性,所以沒有括號

df.dtypes

#每一列的數據類型

df.index

#行索引名,返回Index類型的索引的集合

df.shape

#返回(行數,列數)格式的元組

df.values

#值的二維數組,返回numpy.ndarray對象

s.nunique()

#返回唯一值個數

s.unique()

#唯一值數據,返回array格式

(3)數據篩選

數據篩選的本質無外乎就是根據行和列的特性來選擇滿足我們需求的數據,掌握這些基本的篩選方法就可以組合複雜的篩選方法。

df["col1"]

#選擇某一列,返回的是Series類型

df[["col1"]]

#選擇某一列,返回的是DataFrame類型

df[df["col1"] > 1]

#選取滿足條件的行,

df["col"]>1

#返回的還是一個數據框,只是每個值為bool值

df.query("col1 > 1")

#這種方法也可選取滿足條件的行

df.loc[m:n]

#按照行索引選取m~n行,注意是包含n的

df.loc[m:n,'col1':'coln']

#注意loc函數的參數都是索引名

df.iloc[m:n]

#獲取從m~n-1行,iloc函數代表的是位置,即參數都是數字,代表第幾行第幾列

df.select_dtypes(include=None, exclude=None)

#按照數據類型選擇列

df.isin(values=)

#數據框中數據是否存在於values中,返回的是DataFrame類型

(4)數據清洗

數據清洗主要是一些重複值、缺失值和索引名稱等問題的處理。

df.duplicated(subset=["col"],keep=first)

#各行是否是重複行,返回Series,keep參數為first,last,False,first意思是第一次出現的重複值保留。

df.drop_duplicates(subset=["col"],keep=first,ignore_index=True)

#根據列刪除重複行,返回刪除後的結果數據

df.fillna(value=,inplace=)

#用value值填充na,返回填充後的結果數據df.dropna(axis=0,how='any',inplace=False)

#axis=0即行,how有『any』和『all』兩個選項,all表示所有值都為NA才刪除df.drop(labels=0,columns=['col1'],axis=0,)

#刪除指定列,也可以刪除行,axis作用不大

df.rename(index={'row1':'A'},columns={'col1':'A1'})

#重命名行索引和列名稱df.replace(to_replace=np.nan,value=0,inplace=False)

#替換df值,前後值可以用字典表示,如{"a":『A', "b":'B'}df.columns=pd.MultiIndex.from_tuples(indx)

#構建層次化索引

(5)數據處理

數據處理的範疇很廣,包含數據的統計匯總,也包含數據的轉換,做這一塊時腦中要同時進行抽象處理,便於查看邏輯是否有錯。

pd.merge(df1, df2, on='col1',left_on='col1',right_on='col2',how='inner',sort=False) #how有outer,left,right選項,默認inner,suffixes表示在相同的列名添加後綴

pd.concat([df1,df2,df3], axis=0,join='outer',ignore_index=False,keys=["x","y","z"])

#按行或是按列拼接多個數據框或Series,axis=0為按列拼接,即增加在行下面,key添加層次化索引

df1.append(df2,ignore_index=False)

#可為df也可為s,按列添加,即添加行,ignor_index=False意思是都按照原先的行索引值

df.stack(level=-1,dropna=True)

#列旋轉成行,也就是列名變為行索引名,原索引變成多層索引,evel表示選取哪個索引進行轉換,-1表示最內層的索引,0表示第一層索引

df.unstack(level=-1,fill_value=None)

#行轉列,默認從最內層索引開始df.pivot_table(index=["col1","col2"],values=["col3"],columns=["col4"],aggfunc="count")

#類似於Excel中的數據透視表,index表示選擇行,column是選擇列,values是進行函數計算的列

df.groupby(["col1"])#根據列對數據框進行分組,返回分組對象

df.groupby(["col1"])["col2"].count()#表示根據col1列進行分組,統計col2列的行數。這種方式是最為常用的統計匯總方法

df.agg({"col1":"count","col2":"sum"},axis=0) #agg是聚合的別名,表示對不同列用不同函數進行統計,返回Series對象

df.sort_values(by='col1',axis=0,ascending=True, inplace=False, na_position={"last","first"})

#按照某一列對數據框進行排序

df.apply(lambda x :x.max()-x.min(),axis=0)

#默認參數axis=0,表示按列對數據進行操作

df.applymap(lambda x : 1 if x>0 else 0)

#對數據框每一個數據進行操作,返回DataFrame格式

s.map(lambda x : 1 if x>0 else 0)

#對Series的每一個數據進行,不能對DataFrame操作

s.value_counts()

#對Series中數據進行分類匯總

pd.cut(s,bins=[-np.inf,0,np.inf],labels=list("abc"))

#bins為左開右閉區間,將Series數據進行分類

df.where(df<0,0) #與numpy的where函數有不同,後面的值表示不滿足條件的賦值為0,滿足的話就不變

pd.date_range(start='2020-01-01',end='2020-02-01',periods=,freq="D")

#periods為期數,注意不要衝突,freq為類型,種類有很多,默認是天,M為月尾,MS為月初

03結語

函數還有很多,但都不太常見了。我們平時學習的時候可以養成記筆記的好習慣,即把出現的函數記下來,分門別類地匯總在一起,等記不清時就可以直接在匯總中查找了,閒暇時也可以瞅一瞅,這樣次數多了後就會慢慢全部記住了。

相關焦點

  • Python函數詳解一(函數參數、變量作用域)
    python除了可以直接使用內置函數,還支持自定義函數。定義函數使用 def 關鍵字,格式如下:函數的返回值函數的返回值用return語句返回,函數體內部的語句在執行時,一旦執行到return時,函數就執行完畢,並將結果返回。如果沒有返回值,函數執行完畢後也會返回結果,只是結果為None。
  • python之OS模塊39個常用函數詳解
    作者:小伍哥 來源:AI入門學習os,語義作業系統,所以該模塊就是作業系統相關的功能了,用於處理文件和目錄這些我們日常手動需要做的操作,比如新建文件夾、獲取文件列表、刪除某個文件、獲取文件大小、重命名文件、獲取文件修改時間等,該模塊就包含了大量的作業系統操作函數,精選常用的進行解析,希望對大家有所幫助。
  • Python函數的基本特徵詳解
    當python運行到def語句時,它將會生成一個新的函數對象並將其賦值給這個函數名。和普通對象賦值一樣,函數名就成了某一個函數的引用。python中,萬物皆對象,因此函數也是一種對象,他可以賦值給其他的變量名,並且可以保存在列表之中。第三:函數是通過賦值語句(對象引用)傳遞的。
  • 如何序列化處理數據?真的會用pickle嗎?python中常用模塊詳解
    今天,我們詳解pickle模塊的使用。什麼是序列化?簡單來講,就是把一個對象(變量)或者任何形式的數據結構從內存中變成可存儲對象或進行傳輸的過程,我們稱之為序列化。序列化在python中稱為pickle,這個過程就是我們前面描述的需求。
  • python數據分析--回歸函數及線性回歸分析
    2.工具數據分析有很多成熟的工具可以使用,如R、python、spss等。此處我們選用python進行分析。首先,我們需要安裝並導入python數據分析常用的庫。# 工具:python3#固定導入import numpy as np #科學計算基礎庫,多維數組對象ndarrayimport pandas as pd #數據處理庫,DataFrame(二維數組)import matplotlib as mpl #畫圖基礎庫import matplotlib.pyplot
  • Python數據分析—apply函數
    在對海量數據進行分析的過程中,我們可能要把文本型的數據處理成數值型的數據,方便放到模型中進行使用。
  • python數據分析專題 (7):python數據分析模塊
    python是一門優秀的程式語言,而是python成為數據分析軟體的是因為python強大的擴展模塊。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    變量的計算和輸入輸出 08 變量的命名 09 if判斷語句 10 石頭剪刀布 11 while循環基本使用 12循環嵌套 13 函數的基本使用 14 函數的參數和返回值 15函數的嵌套調用 16模塊的簡介 17列表 18元祖 19字典
  • Python數據分析常用高階函數大全
    第一個參數,是函數第二個參數,是可迭代對象(列表、字符串等)map返回的是對可迭代對象裡的每個元素進行函數運算的結果與此同時,map函數的好朋友就是lambda,lambda匿名函數經常作為map的第一個參數進行組合使用例如print(list(map(lambdax:x*3,l)))返回的結果依舊是[0, 3, 6
  • 數據分析工具篇——pandas高效函數
    ,這些方法圍繞數據的查詢結果進行深入處理,在數據分析中主要做特徵處理工作。   從上面的數據可以看出,對應的列數據類型變化時只需要使用astype函數即可。.str.split('-').strprint(df)某一列中存在固定的分隔符,我們可以採用split函數進行切分,有意思的是我們看到了python的鏈式結構。
  • 43個Excel函數,數據分析必備!
    對於Excel的進階學習,主要分為兩塊——一個是數據分析常用的Excel函數,另一個是用Excel做一個簡單完整的分析。這篇文章主要介紹數據分析常用的43個Excel函數及用途,實戰分析將在下一篇講解。(本文內容為目錄式的,介紹每個函數是做什麼的、遇到某個問題可以用哪個函數解決等,具體使用方法各位可以自行百度學習。)
  • 如何快速學會Python處理數據?(5000字走心總結)
    1.2 明確Python的學習方向Python的學習方向有很多,比如:我是日常用Python主要做數據處理和數據分析工作,所以我選擇的是數據處理和數據分析方向,其他Python功能接觸的比較少。數據導入、清洗和準備、規整、分組等操作,都是數據處理中常用的方法,平常對比Excel數據操作,Python都可以實現,而且一行簡單的代碼,就可以操作比較複雜的數據處理方法。1.5 多練!多練!多練!重要的事情說三遍,多練!多練!多練!
  • Python中的函數定義與參數使用
    本節知識點:(1)函數定義格式;(2)五種參數使用函數定義 基本語法格式def function_name(  parameter_list  ):              return values函數通常為小寫英語單詞及其組合
  • Python數據分析實戰基礎(二):清洗常用4板斧
    >我們來詳解一下merge的參數,left和rgiht分別對應著需要連接的左表和右表,這裡語數外成績表是左表,籃球、舞蹈成績是右表。how是指定連接方式,這裡用的inner,表示我們基于姓名索引來匹配,只返回兩個表中共同(同時出現)姓名的數據。下面詳解一下inner還涉及到的其他參數——left,right,outer。
  • Python函數的5類參數使用詳解
    位置參數位置參數的定義:函數調用時根據函數定義的參數位(形參)置來傳遞參數,是最常見的參數類型。規則1:位置參數必須一一對應,缺一不可關鍵字參數在函數調用時,通過『鍵--值』方式為函數形參傳值,不用按照位置為函數形參傳值。
  • Python數據分析之NumPy庫
    NumPy庫簡介NumPy庫使用Python進行科學計算,尤其是數據分析時,所用到的一個基礎庫。它是大量Python數學和科學計算包的基礎,比如我們後面會講到的pandas庫就用到了NumPy。pandas庫專門用於數據分析,充分借鑑了Python標準庫NumPy的相關概念。
  • python時間序列分析之_用pandas中的rolling函數計算時間窗口數據
    上篇文章中,我們講解了如何對時間數據進行重採樣及重採樣中降採樣和升採樣的概覽和使用方法,通過重採樣我們可以得到任何想要頻率的數據,但是這些數據也是一個時點的數據,那麼就存在這樣一個問題:時點的數據波動較大,某一點的數據不能很好的表現它本身的特性,於是我們就想,能否用一個區間的的數據去表現呢,這樣數據的準確性是不是更好一些呢?
  • python數據分析常用庫之pandas入門(2)
    /user/data/data_1.csv", index_col=0)一、python索引方法所有在pythons中索引數據的方法在pandas中同樣適用。比如,我們可以通過object.col_name的方式進行查看: 可以用類似python字典的方式來索引DataFrame的數據;
  • Python做數據分析-簡潔、易讀、強大
    3. scipy.optimize:函數優化器(最小化器)以及根查找算法。4. scipy.signal:信號處理工具。5. scipy.sparse:稀疏矩陣和稀疏線性系統求解器。6. scipy.special:SPECFUN(這是一個實現了許多常用數學函數(如伽瑪函數)的Fortran庫)的包裝器。
  • python入門基礎之lambda匿名函數詳解
    python入門基礎之lambda匿名函數詳解剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數我從一下幾個方面來介紹lambda:1、lambda簡介2、lambda與def不同之處3、lambda的使用方法