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

2020-12-05 社會愛智者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之OS模塊39個常用函數詳解
    作者:小伍哥 來源:AI入門學習os,語義作業系統,所以該模塊就是作業系統相關的功能了,用於處理文件和目錄這些我們日常手動需要做的操作,比如新建文件夾、獲取文件列表、刪除某個文件、獲取文件大小、重命名文件、獲取文件修改時間等,該模塊就包含了大量的作業系統操作函數,精選常用的進行解析,希望對大家有所幫助。
  • 如何序列化處理數據?真的會用pickle嗎?python中常用模塊詳解
    今天,我們詳解pickle模塊的使用。什麼是序列化?簡單來講,就是把一個對象(變量)或者任何形式的數據結構從內存中變成可存儲對象或進行傳輸的過程,我們稱之為序列化。序列化在python中稱為pickle,這個過程就是我們前面描述的需求。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    變量的計算和輸入輸出 08 變量的命名 09 if判斷語句 10 石頭剪刀布 11 while循環基本使用 12循環嵌套 13 函數的基本使用 14 函數的參數和返回值 15函數的嵌套調用 16模塊的簡介 17列表 18元祖 19字典
  • Python數據分析常用高階函數大全
    作者 | CDA數據分析師 來源 | CDA數據科學研究院mapmap(function,iterable,...)第一個參數,是函數第二個參數,是可迭代對象(列表、字符串等)map返回的是對可迭代對象裡的每個元素進行函數運算的結果例如:def fun(x): return x*3l=[0,1,2,3,4,5]l_m=map(fun,l)print(list(l_m))
  • python入門基礎之lambda匿名函數詳解
    python入門基礎之lambda匿名函數詳解剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數我從一下幾個方面來介紹lambda:lambda作為一個表達式,定義了一個匿名函數,上例的代碼x,y為入口參數,x+y為函數體。在這裡lambda簡化了函數定義的書寫形式。python允許用lambda關鍵字創造匿名函數。匿名是不需要以標準的方式來聲明,比如說使用 def 語句。(除非賦值給一個局部變量,這樣的對象也不會在任何的名字空間內創建名字,上面的例子中會創建名字。)
  • 懂Excel輕鬆入門Python數據分析包pandas(二十七):IF函數代替者
    此系列文章收錄在:數據大宇宙 > 數據處理 > E-pd轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • python時間序列分析之_用pandas中的rolling函數計算時間窗口數據
    上篇文章中,我們講解了如何對時間數據進行重採樣及重採樣中降採樣和升採樣的概覽和使用方法,通過重採樣我們可以得到任何想要頻率的數據,但是這些數據也是一個時點的數據,那麼就存在這樣一個問題:時點的數據波動較大,某一點的數據不能很好的表現它本身的特性,於是我們就想,能否用一個區間的的數據去表現呢,這樣數據的準確性是不是更好一些呢?
  • Python每日3題-為什麼函數名字可以當做參數用?
    [Easy] 為什麼函數名字可以當做參數用? 思考30秒再往下翻...裝飾器的返回值也是一個函數的對象,它經常用於有切面需求的場景。比如:插入日誌,性能測試,事務處理,緩存。權限的校驗等場景,有了裝飾器就可以抽離出大量的與函數功能本身無關的雷同代碼並發並繼續使用。 [Hard] 生成器,迭代器的區別? 思考30秒再往下翻...
  • python:pop函數詳解 - 二進位01
    pop函數詳解今天我為大家講解python中pop函數的使用。#python#簡介——pop()函數是python解釋器的內置方法,可作用於列表,字典。用法說明——在builtins.py中找到pop函數。列表:L.pop([index]) -> item -- remove and return item at index (default last).
  • python基礎課程 第5章 奇妙的內建函數
    今天我們來講講 python 的常用內建函數,以便於大家在日常編程過程中遇到類似的場景可以直接拿來使用,不用再重複自己了。python 內建函數(python自帶的函數) 數量加起來大概有70多個,今天我們主要講常用的一些,至於更多的內容可以在以後的基礎教程裡慢慢學到。
  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • softmax 損失函數 & 參數更新詳解
    對參數求偏導推導及更新要點回歸:邏輯回歸二分類用sigmoid變換成預測單個「概率」,損失函數為交叉熵,用梯度下降求解參數wbsoftmax多分類用softmax變換成多個「概率」,損失函數和求解思路類似相比(−∞,+∞)範圍內的數值結果,概率天然具有更好的可解釋性;我們獲得了K個類別(−
  • Python每天一分鐘:lambda表達式 (匿名函數)及用法詳解
    lambda 表達式可以用來替換局部函數(感興趣的讀者可以自行查閱「局部函數」),下面為大家演示lambda表達式的具體用法。在 lambda 關鍵字之後、冒號左邊為參數列表,可不帶參數,也可有多個參數。若有多個參數,則參數間用逗號隔開,冒號右邊為 lambda 表達式的返回值。
  • python數據類型總結——列表
    python用列表或元組來幫助我們。python列表一系列元素組成一個集合,可能通過索引,對每個元素進行訪問。這種數據類型統稱為序列。在python中,字符串就是一種序列。python列表常用函數或方法python提供了一系列函數或方法,幫助我們完成對列表的操作。這些方法,大部分都是可以用途其它類型的序列的。如 + 或 * 一樣。len用於獲取列表的元素個數,max或min用於取出最大值可最小值。
  • Python數據類型串講(中)
    2、列表在對序列有了大體的認識後,現在開始介紹序列中最具代表性的數據類型——列表。python中列表以中括號'[ ]'為標識,將一個或多個元素(以逗號分隔)括起來為一個列表,其元素可以為python中任意一種數據類型包括列表本身,且各元素不需要具備相同的數據類型。
  • Python之list列表數據類型講解
    前言在python中,list列表數據類型其實就是一個容器,可以放置大量元素的集合。同時,list列表也有很多特點和使用場景,本文主要講解list列表的函數方法。概念list列表是一個集合,一個容器,同Java語言中的數組是一樣的,唯一的不同之處在於,Java中的數組類型只能放置同一種數據類型,而Python中的列表可以放置不同的數據類型。
  • 零基礎入門Excel數據分析「函數篇」:8個常用的時間序列類函數
    在數據分析中,日期時間類型的數據很常見,所以Excel中有專門的函數用於處理日期時間類型的數據,這些函數被歸為時間序列類。1、yearyear可以提取日期中的年份,例如,給定日期:2019/11/26,要獲取其中的年份,用year函數即可,如下圖所示。
  • 零基礎入門Excel數據分析「函數篇」:5個常用的關聯匹配類函數
    在數據分析中,數據的查找、對比等非常常見,這就需要用到關聯匹配類函數,本文將介紹Excel數據分析中常用的關聯匹配類函數,如vlookup、hlookup、index、match及rank等。1、vlookupvlookup是Excel查找函數家族中最為常用的一個函數,如果你經常和Excel打交道,那麼一定使用過vlookup。功能:用於數據區域的縱向查找。
  • 常用數據分析方法:方差分析及實現!
    方差分析是一種常用的數據分析方法,其目的是通過數據分析找出對該事物有顯著影響的因素、各因素之間的交互作用及顯著影響因素的最佳水平等。本文介紹了方差分析的基礎概念,詳細講解了單因素方差分析、雙因素方差分析的原理,並且給出了它們的python實踐代碼。
  • 超硬核的 Python 數據可視化教程!
    分析思維的訓練可以學習《麥肯錫方法》和《金字塔原理》中的方法。這是網上的一張關於圖表類型選擇的總結。第二步:轉換數據,應用函數數據分析和建模方面的大量編程工作都是用在數據準備的基礎上的:加載、清理、轉換以及重塑。我們可視化步驟也需要對數據進行整理,轉換成我們需要的格式再套用可視化方法完成作圖。