主頁(yè) > 知識(shí)庫(kù) > Python Pandas常用函數(shù)方法總結(jié)

Python Pandas常用函數(shù)方法總結(jié)

熱門標(biāo)簽:梅州外呼業(yè)務(wù)系統(tǒng) 北京電信外呼系統(tǒng)靠譜嗎 洪澤縣地圖標(biāo)注 無錫客服外呼系統(tǒng)一般多少錢 大連crm外呼系統(tǒng) 高德地圖標(biāo)注是免費(fèi)的嗎 地圖標(biāo)注視頻廣告 老人電話機(jī)器人 百度地圖標(biāo)注位置怎么修改

初衷

NumPy、Pandas、Matplotlib、SciPy 等可以說是最最最常用的 Python 庫(kù)了。我們?cè)谑褂?Python 庫(kù)的時(shí)候,通常會(huì)遇到兩種情況。以 Pandas 舉例。

  • 我想對(duì) Pandas 數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)實(shí)現(xiàn)某種操作,但是我不知道或者說在我的印象里似乎已經(jīng)不記得是否有這樣的函數(shù)方法,如果有,又該用哪個(gè)方法呢?
  • 我想實(shí)現(xiàn)某種數(shù)據(jù)操作,我記得我用過或者見過某個(gè)函數(shù)可以實(shí)現(xiàn)這個(gè)功能,但是我死活想不起來那個(gè)函數(shù)叫啥了?;蛘?,我想起來了哪個(gè)函數(shù)可以實(shí)現(xiàn)這個(gè)功能,但是我想知道是否有更好的選擇。

這個(gè)時(shí)候大家就會(huì)開始借助百度、知乎、谷歌、CSDN 開始進(jìn)行關(guān)鍵搜索了。這樣做當(dāng)然可以,最終也能得到你想要的結(jié)果,但是就會(huì)面臨兩個(gè)小問題。

  • 有時(shí)候我想對(duì)數(shù)據(jù)做這樣的操作,我心里知道是這個(gè)意思,但是我不知道如何去描述這個(gè)事情,關(guān)鍵詞不精確,導(dǎo)致搜索的結(jié)果有偏差,搜索技術(shù)不行,走了不少?gòu)澛贰?/li>
  • 搜索到別人提供的結(jié)果,但是呢,要么排版很亂,要么長(zhǎng)篇大論,從函數(shù)接口開始一點(diǎn)一點(diǎn)說,一堆你不想要的信息,讓你 get 不到重點(diǎn),明明一秒鐘可以解決的問題,卻花了你一分鐘去看別人的解釋,獲取重點(diǎn),浪費(fèi)了不少時(shí)間。

基于以上,我就在想如何解決這樣一個(gè)問題。解決方案如下:假如你知道但只是忘記了某個(gè)函數(shù)可以實(shí)現(xiàn)這個(gè)功能,那么當(dāng)你看到函數(shù)名稱的時(shí)候,就會(huì)想起來。所以,我想把最最常用的一些方法和函數(shù)名稱直接羅列出來,然后你一眼掃過去或者直接 ctrl+f 搜索中文,就能輕易喚起你曾經(jīng)的記憶。假如你不知道是否存在一個(gè)函數(shù),有你想要的功能,我依然還是把函數(shù)名稱羅列出來,然后在其后進(jìn)行一個(gè)中文的補(bǔ)充說明。你一眼掃過這些函數(shù)及其補(bǔ)充說明,相信很快就能判斷是否有滿足你需求的函數(shù)。

下面的內(nèi)容這樣組織,第二部分我羅列出常用的 Pandas 函數(shù)方法,及其補(bǔ)充說明,第三部分我對(duì)這些函數(shù)的用法進(jìn)行舉例子,你拷貝到代碼中進(jìn)行修改就可以直接使用,這比從接口模板開始一點(diǎn)一點(diǎn)看省事多了。我相信這也是大部分優(yōu)秀的程序員想要的東西,用最短的時(shí)間,完成想做的事情。當(dāng)然,當(dāng)下面的內(nèi)容不滿足你的需求,你可以進(jìn)一步地去搜索即可。

以下函數(shù)方法,涵蓋了 90% 以上的使用情況,值得收藏,作為小字典查詢。

除非你經(jīng)常用某種語(yǔ)言,函數(shù)方法爛熟于心而根本不需要查詢,否則的話,大部分人也記不住這些東西??赡苤挥浀糜羞@么一個(gè)東西,都是現(xiàn)查別人的代碼,要么拷貝過來改改,要么手抄過來。特別是我這種,接觸的語(yǔ)言比較多,就經(jīng)常搞串用法,大部分時(shí)候 ,都是現(xiàn)查現(xiàn)賣。

Pandas 最最常用函數(shù)羅列

## 讀寫
pd.Series #定義一維標(biāo)記數(shù)組
pd.DataFrame #定義數(shù)據(jù)框
pd.read_csv #讀取逗號(hào)分隔符文件
pd.read_excel #讀取 excel 表格
pd.to_excel #寫入 excel 表格
pd.read_sql #讀取 SQL 數(shù)據(jù)
pd.read_table #讀取 table
pd.read_json #讀取 json 文件
pd.read_html #讀取 html
pd.read_clipboard() #從剪切板讀入數(shù)據(jù)
df.to_csv #寫入 csv 文件
df.to_excel #寫入 excel 文件
df.to_sql #寫入 SQL 表
df.to_json #寫入 JSON 文件
df.to_html #寫入 HTML 表格
df.to_clipboard() #寫入剪切板

## 數(shù)據(jù)展示和統(tǒng)計(jì)
df.info() #統(tǒng)計(jì)數(shù)據(jù)信息
df.shape() #統(tǒng)計(jì)行數(shù)和列數(shù)
df.index() #顯示索引總數(shù)
df.columns() #顯示數(shù)據(jù)框有哪些列
df.count() #顯示有多少個(gè)記錄
df.head(n) #返回前 n 個(gè),默認(rèn) 5
df.tail(n) #返回后 n 個(gè)
df.sample(n) #隨機(jī)選取 n 行
df.sample(frac = 0.8) #百分比為 0.8 的選取
df.dtypes #查看每一列的數(shù)據(jù)類型
df.sum() #數(shù)據(jù)框按列求和
df.cumsum() #數(shù)據(jù)框累計(jì)求和
df.min() #給出每列的最小值
df.max() #給出每列的最大值
df['列名'].idxmin() #獲取數(shù)據(jù)框某一列的最小值
mySeries.idxmin() #獲取 Series 的最小值
df['列名'].idxmax() #獲取數(shù)據(jù)框某一列的最大值
mySeries.idxmax() #獲取 Series 的最大值
df.describe() #關(guān)數(shù)據(jù)的基本統(tǒng)計(jì)信息描述
df.mean() #給出數(shù)據(jù)框每一列的均值
df.median() #給出數(shù)據(jù)框每一列的中位數(shù)
df.quantile #給出分位數(shù)
df.var() #統(tǒng)計(jì)每一列的方差
df.std() #統(tǒng)計(jì)每一列的標(biāo)準(zhǔn)差
df.cummax() #尋找累計(jì)最大值,即已出現(xiàn)中最大的一個(gè)
df.cummin() #累計(jì)最小值
df['列名'].cumproad() #計(jì)算累積連乘
len(df) #統(tǒng)計(jì)數(shù)據(jù)框長(zhǎng)度
df.isnull #返回?cái)?shù)據(jù)框是否包含 null 值
df.corr() #返回列之間的相關(guān)系數(shù),以矩陣形式展示
df['列名'].value_counts() #列去重后給每個(gè)值計(jì)數(shù)

## 數(shù)據(jù)選擇
mySeries['列名'] #用中括號(hào)獲取列
df['列名'] #選取指定列
df.列名 #同上
df[n0:n1] #返回 n0 到 n1 行之間的數(shù)據(jù)框
df.iloc[[m],[n]] #iloc按行號(hào)來索引,兩層中括號(hào),取第 m 行第 n 列
df.loc[m:n] #loc 按標(biāo)簽來索引,返回索引 m 到 n 的數(shù)據(jù)框,loc、iloc 主要針對(duì)行來說的
df.loc[:,"列1":"列2"] #返回連續(xù)列的所有行
df.loc[m:n,"列1":"列2"] #返回連續(xù)列的固定行
df['列名'][n] #選取指定列的第 n 行
df[['列1','列2']] #返回多個(gè)指定的列

## 數(shù)據(jù)篩選和排序
df[df.列名  n] #篩選,單中括號(hào)用于 bool 值篩選
df.filter(regex = 'code') #過濾器,按正則表達(dá)式篩選
df.sort_values #按某一列進(jìn)行排序
df.sort_index() #按照索引升序排列
df['列名'].unique() #列去重
df['列名'].nunique() #列去重后的計(jì)數(shù)
df.nlargest(n,'列名') #返回 n 個(gè)最大值構(gòu)成的數(shù)據(jù)框
df.nsmallest(n,'列名') #返回 n 個(gè)最小的數(shù)據(jù)框
df.rank #給出排名,即為第幾名

## 數(shù)據(jù)增加刪除修改
df["新列"] = xxx #定義新列
df.rename #給列重命名
df.index.name = "index_name" #設(shè)定或者修改索引名稱
df.drop #刪除行或者列
df.列名 = df.列名.astype('category') #列類型強(qiáng)制轉(zhuǎn)化
df.append #在末尾追加一行
del df['刪除的列'] #直接刪除一列

## 特別的
df.列名.apply #按列的函數(shù)操作
pd.melt #將寬數(shù)據(jù)轉(zhuǎn)化為長(zhǎng)數(shù)據(jù)(拆分拉長(zhǎng)),run 一下下面例子就知道什么意思了
pd.merge #兩個(gè)數(shù)據(jù)表間的橫向連接(內(nèi)連接,外連接等)
pd.concat #橫向或者縱向拼接

Pandas 函數(shù)用法示例

mySeries = pd.Series([1,2,3,4], index=['a','b','c','d'])

data = {'Country' : ['Belgium', 'India', 'Brazil' ],
        'Capital': ['Brussels', 'New Delhi', 'Brassilia'],
        'Population': [1234,1234,1234]}
df = pd.DataFrame(data, columns=['Country','Capital','Population'])

pd.DataFrame(np.random.rand(20,5))

df = pd.read_csv('data.csv')

pd.read_excel('filename')
pd.to_excel('filename.xlsx', sheet_name='Sheet1')

df.quantile([0.25, 0.75]) # 給出每一列中的25%和75%的分位數(shù)

filters = df.Date > '2021-06-1'
df[filters] #選出日期在某個(gè)日期之后的所有行

df.filter(regex='^L') #選出 L 開頭的列

df.sort_values('列名', ascending= False) #按指定列的值大小升序排列

df.rename(columns= {'老列名' : '新列名'}) #修改某個(gè)列名

df["新列"] = df.a- df.b #定義一個(gè)新的列表示為兩個(gè)的差

df.columns = map(str.lower(), df.columns) #所有列名變?yōu)樾懽帜?

df.columns = map(str.upper(), df.columns) #所有列名變?yōu)榇髮懽帜?

df.drop(columns=['列名']) #刪除某一列
df.drop(['列1', '列2'], axis=1) #含義同上,刪除兩列
mySeries.drop(['a']) #刪除 Series 指定值
df.drop([0, 1]) #根據(jù)索引刪除,雙閉區(qū)間

def fun(x):
    return x*3
df.列名.apply(fun)  #把某一列乘 3 倍

df.列名.apply(lambda x: x*3) #匿名表達(dá)式的寫法

df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},'B': {0: 1, 1: 3, 2: 5}, 'C': {0: 2, 1: 4, 2: 6}})
pd.melt(df, id_vars=['A'], value_vars=['B','C']) #melt的使用

new=pd.DataFrame({'name':'lisa', 'gender':'F', 'city':'北京'},index=[1])
df = new
df=df.append(new) #增加一行數(shù)據(jù)

frame = pd.DataFrame({'a':[2.3,-1.7,5,3],'b':[6,2.9,-3.1,8]},index=['one','two','three','four'])
frame.rank(method="min",ascending=False)#對(duì)每一列的數(shù)據(jù),根據(jù)大小給個(gè)排名


#merge 表示橫向連接
df3 = pd.merge(df1,df2,how='inner',on='股票簡(jiǎn)稱') #on表示連接列,how選擇連接方式
pd.merge(df1,df2,left_on='lkey',right_on='rkey',how='left') #當(dāng)連接列名不同分別指定
#concat 拼接
pd.concat([df1,df1])  #縱向連接,當(dāng)s1和s2索引不重疊時(shí),可以直接拼接
pd.concat([df1,df1],axis = 1)  #橫向連接,默認(rèn)外連接,以行索引為連接字段

到此這篇關(guān)于Python Pandas常用函數(shù)方法總結(jié)的文章就介紹到這了,更多相關(guān)Pandas常用函數(shù)方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Pandas數(shù)據(jù)分析的一些常用小技巧
  • python之pandas用法大全
  • Python pandas用法最全整理
  • Python遍歷pandas數(shù)據(jù)方法總結(jié)
  • Python pandas常用函數(shù)詳解
  • Python使用Pandas庫(kù)常見操作詳解
  • pandas提升計(jì)算效率的一些方法匯總
  • 11個(gè)Python Pandas小技巧讓你的工作更高效(附代碼實(shí)例)
  • 詳解pandas獲取Dataframe元素值的幾種方法
  • python數(shù)據(jù)分析必會(huì)的Pandas技巧匯總

標(biāo)簽:泉州 洛陽(yáng) 長(zhǎng)春 岳陽(yáng) 吉林 安慶 清遠(yuǎn) 怒江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python Pandas常用函數(shù)方法總結(jié)》,本文關(guān)鍵詞  Python,Pandas,常用,函數(shù),方法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python Pandas常用函數(shù)方法總結(jié)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Python Pandas常用函數(shù)方法總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章