佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Python Pandas常用函數(shù)方法總結

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

熱門標簽:呼叫中心市場需求 銀行業(yè)務 智能手機 服務器配置 網站文章發(fā)布 鐵路電話系統(tǒng) 檢查注冊表項 美圖手機

初衷

NumPy、Pandas、Matplotlib、SciPy 等可以說是最最最常用的 Python 庫了。我們在使用 Python 庫的時候,通常會遇到兩種情況。以 Pandas 舉例。

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

這個時候大家就會開始借助百度、知乎、谷歌、CSDN 開始進行關鍵搜索了。這樣做當然可以,最終也能得到你想要的結果,但是就會面臨兩個小問題。

  • 有時候我想對數(shù)據(jù)做這樣的操作,我心里知道是這個意思,但是我不知道如何去描述這個事情,關鍵詞不精確,導致搜索的結果有偏差,搜索技術不行,走了不少彎路。
  • 搜索到別人提供的結果,但是呢,要么排版很亂,要么長篇大論,從函數(shù)接口開始一點一點說,一堆你不想要的信息,讓你 get 不到重點,明明一秒鐘可以解決的問題,卻花了你一分鐘去看別人的解釋,獲取重點,浪費了不少時間。

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

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

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

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

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

## 讀寫
pd.Series #定義一維標記數(shù)組
pd.DataFrame #定義數(shù)據(jù)框
pd.read_csv #讀取逗號分隔符文件
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)計
df.info() #統(tǒng)計數(shù)據(jù)信息
df.shape() #統(tǒng)計行數(shù)和列數(shù)
df.index() #顯示索引總數(shù)
df.columns() #顯示數(shù)據(jù)框有哪些列
df.count() #顯示有多少個記錄
df.head(n) #返回前 n 個,默認 5
df.tail(n) #返回后 n 個
df.sample(n) #隨機選取 n 行
df.sample(frac = 0.8) #百分比為 0.8 的選取
df.dtypes #查看每一列的數(shù)據(jù)類型
df.sum() #數(shù)據(jù)框按列求和
df.cumsum() #數(shù)據(jù)框累計求和
df.min() #給出每列的最小值
df.max() #給出每列的最大值
df['列名'].idxmin() #獲取數(shù)據(jù)框某一列的最小值
mySeries.idxmin() #獲取 Series 的最小值
df['列名'].idxmax() #獲取數(shù)據(jù)框某一列的最大值
mySeries.idxmax() #獲取 Series 的最大值
df.describe() #關數(shù)據(jù)的基本統(tǒng)計信息描述
df.mean() #給出數(shù)據(jù)框每一列的均值
df.median() #給出數(shù)據(jù)框每一列的中位數(shù)
df.quantile #給出分位數(shù)
df.var() #統(tǒng)計每一列的方差
df.std() #統(tǒng)計每一列的標準差
df.cummax() #尋找累計最大值,即已出現(xiàn)中最大的一個
df.cummin() #累計最小值
df['列名'].cumproad() #計算累積連乘
len(df) #統(tǒng)計數(shù)據(jù)框長度
df.isnull #返回數(shù)據(jù)框是否包含 null 值
df.corr() #返回列之間的相關系數(shù),以矩陣形式展示
df['列名'].value_counts() #列去重后給每個值計數(shù)

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

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

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

## 特別的
df.列名.apply #按列的函數(shù)操作
pd.melt #將寬數(shù)據(jù)轉化為長數(shù)據(jù)(拆分拉長),run 一下下面例子就知道什么意思了
pd.merge #兩個數(shù)據(jù)表間的橫向連接(內連接,外連接等)
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] #選出日期在某個日期之后的所有行

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

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

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

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

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) #匿名表達式的寫法

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)#對每一列的數(shù)據(jù),根據(jù)大小給個排名


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

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

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

標簽:紅河 樂山 上海 沈陽 滄州 長治 新疆 河南

巨人網絡通訊聲明:本文標題《Python Pandas常用函數(shù)方法總結》,本文關鍵詞  ;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    浑源县| 蒙自县| 孝义市| 榕江县| 隆化县| 夏河县| 巴林右旗| 延吉市| 东乡| 霍州市| 建阳市| 镇坪县| 正镶白旗| 贵港市| 抚松县| 盐山县| 英吉沙县| 兴国县| 德兴市| 宽城| 紫云| 昆山市| 宁蒗| 新泰市| 南通市| 普安县| 郯城县| 民勤县| 琼中| 开平市| 丹棱县| 金平| 灌南县| 屏南县| 体育| 海原县| 临邑县| 全州县| 青龙| 浑源县| 福贡县|