溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas函數(shù)有哪些

發(fā)布時間:2021-11-04 16:12:38 來源:億速云 閱讀:156 作者:iii 欄目:web開發(fā)

本篇內容介紹了“Pandas函數(shù)有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1.安裝

如果想自己運行這些示例,請從Kaggle下載Anime推薦數(shù)據(jù)集,將其解壓縮并放入與jupyter notebook相同的文件夾中。

接下來運行這些指令,應該能重復得出以下任一函數(shù)的結果。

import pandas as pd import numpy as npanime =pd.read_csv('anime-recommendations-database/anime.csv') rating = pd.read_csv('anime-recommendations-database/rating.csv')anime_modified= anime.set_index('name')

2.輸入

輸入CSV(逗號分隔值)

將CSV直接轉換為數(shù)據(jù)框。有時CSV載入數(shù)據(jù)還需要指定一種編碼(即:encoding='ISO-8859–1')。如果數(shù)據(jù)框包含不可讀的字符,應首先嘗試上述方法。

對于表格文件,存在一個叫做pd.read_excel的類似函數(shù)。

anime =pd.read_csv('anime-recommendations-database/anime.csv')

Pandas函數(shù)有哪些

根據(jù)輸入數(shù)據(jù)構建數(shù)據(jù)框

這在手動示例化簡單數(shù)據(jù)時十分有用,方便查看這些數(shù)據(jù)運行時如何變化。

df = pd.DataFrame([[1,'Bob','Builder'],                   [2,'Sally', 'Baker'],                   [3,'Scott', 'CandleStick Maker']], columns=['id','name', 'occupation'])

Pandas函數(shù)有哪些

df.head()

復制數(shù)據(jù)框

想保留原始副本同時對數(shù)據(jù)框進行更改,復制數(shù)據(jù)框很有用。在輸入數(shù)據(jù)框后立即對其進行復制是很好的做法。

anime_copy =anime.copy(deep=True)
Pandas函數(shù)有哪些

3.查看和檢驗

獲取頂部或底部的n項記錄

顯示數(shù)據(jù)框中的前n項記錄。筆者通常在notebook中的某個位置打印數(shù)據(jù)框的頂部記錄,以便在忘記其中的內容時可以返回來參考。

anime.head(3) rating.tail(1)
Pandas函數(shù)有哪些
Pandas函數(shù)有哪些

計算行數(shù)

這本身不是pandas函數(shù),而是len()函數(shù)對行進行計數(shù),并將其保存到變量中,在其他地方使用。

len(df) #=> 3

計算唯一行

計算一列中的唯一值。

len(ratings['user_id'].unique())

獲取數(shù)據(jù)框信息

對于獲取一些常規(guī)信息(如標題、值的數(shù)量和按列的數(shù)據(jù)類型)很有用。df.dtypes是一個類似但實用性低的函數(shù),僅提供列數(shù)據(jù)類型。

anime.info()
Pandas函數(shù)有哪些

獲取統(tǒng)計數(shù)據(jù)

如果數(shù)據(jù)框具有很多數(shù)值,獲取統(tǒng)計數(shù)據(jù)非常有用。了解評級列的平均值,最小值和最大值,可以大致了解數(shù)據(jù)框。

anime.describe()
Pandas函數(shù)有哪些

獲取值總和

獲取特定列的值總和。

anime.type.value_counts()
Pandas函數(shù)有哪些

4.輸出

保存為CSV格式

這將轉儲到與notebook相同的目錄。筆者只保存下面的前10行,但讀者不需要這樣做。同樣,也可使用df.to_excel()  函數(shù),將表格文件保存為CSV格式。

rating[:10].to_csv('saved_ratings.csv',index=False)

5.選取

獲取列的值清單或一系列值。

需要將列中的值放入X和y變量中以適應機器學習模型時,此方法有效。

anime['genre'].tolist() anime['genre']
Pandas函數(shù)有哪些
anime[‘genre’].tolist()
Pandas函數(shù)有哪些
anime[‘genre’]

獲取索引值列表

通過索引創(chuàng)建數(shù)值列表。請注意,這里使用了anime_modified數(shù)據(jù)框,因為索引值更加有趣。

anime_modified.index.tolist()

Pandas函數(shù)有哪些

獲取列值列表

anime.columns.tolist()

Pandas函數(shù)有哪些

6.添加/刪除

用設置值附加新列

偶爾,當測試集和訓練集在兩個單獨的數(shù)據(jù)框中,并想在組合它們之前分別標記出行與集的對應關系時,筆者會這樣做。

anime['train set'] = True

從一部分列中創(chuàng)建新的數(shù)據(jù)框

此方法用于只想保留巨型數(shù)據(jù)框中的幾列并且不想指定刪除列時。

anime[['name','episodes']]
Pandas函數(shù)有哪些

刪除指定列

刪除指定列用于僅需刪除幾列時。否則,寫出全部內容可能會很乏味,筆者更喜歡前者,刪除指定列。

anime.drop(['anime_id', 'genre','members'], axis=1).head()
Pandas函數(shù)有哪些

添加其他行總和的一行

因其更易于查看,故在此處手動創(chuàng)建一個小型數(shù)據(jù)框。這里的有趣之處在于,df.sum(axis=0)將值添加到各行或各列中。

計算總和或平均值時,采用同樣的邏輯,如:

df.mean(axis=0). f = pd.DataFrame([[1,'Bob',8000],                  [2,'Sally', 9000],                  [3,'Scott', 20]],columns=['id','name', 'power level'])df.append(df.sum(axis=0),ignore_index=True)
Pandas函數(shù)有哪些

7.合并

串聯(lián)兩個數(shù)據(jù)框

用于同行有兩個數(shù)據(jù)框,并想將其組合的情況。這里將數(shù)據(jù)框分成兩部分,然后重新將它們添加在一起。

df1 = anime[0:2]df2 =anime[2:4]pd.concat([df1, df2], ignore_index=True)
Pandas函數(shù)有哪些
Pandas函數(shù)有哪些
Pandas函數(shù)有哪些

合并數(shù)據(jù)框

想將兩個數(shù)據(jù)框合并在一列時,合并數(shù)據(jù)框就如同SQL(結構化查詢語言)的左聯(lián)接用法。

rating.merge(anime,left_on=’anime_id’, right_on=’anime_id’, suffixes=(‘_left’, ‘_right’))
Pandas函數(shù)有哪些

8.篩選

檢索匹配索引值的行

anime_modified中的索引值是動漫的名稱。請注意,如何使用這些名稱來獲取特定列。

anime_modified.loc[['Haikyuu!!Second Season','Gintama']]
Pandas函數(shù)有哪些

通過編號索引值來檢索行

與上面的函數(shù)不同,使用 iloc,第一行的索引值為0,第二行的索引值為1,以此類推……即便在修改數(shù)據(jù)框后,在索引列中使用字符串值。

使用此函數(shù),當你想獲得數(shù)據(jù)框中的前3行。

anime_modified.iloc[0:3]
Pandas函數(shù)有哪些

獲取行

在給定列表的列值中檢索行。匹配單個值時,anime[anime[‘type’] == 'TV']也適用。

anime[anime['type'].isin(['TV','Movie'])]
Pandas函數(shù)有哪些

拆分數(shù)據(jù)框

這就像拆分表格一樣。拆分數(shù)據(jù)框,來獲取在特定索引前/中/后的所有行。

anime[1:3]
Pandas函數(shù)有哪些

通過值篩選

篩選符合條件的行的數(shù)據(jù)框。但注意,這將維持現(xiàn)有的索引值。

anime[anime['rating'] > 8]
Pandas函數(shù)有哪些

9.排序

排序函數(shù)sort_values

按列中的值對數(shù)據(jù)框進行排序。

anime.sort_values('rating',ascending=False)
Pandas函數(shù)有哪些

10.匯總

分組和計數(shù)

計算列中每個不同值的記錄數(shù)。

anime.groupby('type').count()
Pandas函數(shù)有哪些

以不同方式對列進行分組和匯總

注意,筆者添加了 reset_index() 函數(shù),否則,下文的“type”列將成為索引列——筆者建議在多數(shù)情況下這樣做。

anime.groupby(["type"]).agg({   "rating": "sum",   "episodes":"count",   "name": "last" }).reset_index()

創(chuàng)建數(shù)據(jù)透視表

數(shù)據(jù)透視表是比較適合從數(shù)據(jù)框中提取數(shù)據(jù)子集的工具。

需注意,筆者已對數(shù)據(jù)框進行了大量篩選,因此可以更快地構建數(shù)據(jù)透視表。

tmp_df = rating.copy() tmp_df.sort_values('user_id', ascending=True, inplace=True) tmp_df = tmp_df[tmp_df.user_id < 10] tmp_df = tmp_df[tmp_df.anime_id < 30] tmp_df = tmp_df[tmp_df.rating != -1]pd.pivot_table(tmp_df, values='rating',index=['user_id'], columns=['anime_id'], aggfunc=np.sum, fill_value=0)
Pandas函數(shù)有哪些

11.整理

設置非數(shù)(NaN)單元格為某個值

設置非數(shù)值單元格為0。示例中,筆者像之前一樣創(chuàng)建了相同的數(shù)據(jù)透視表,但不使用fill_value=0,而是使用 fillna(0)進行填充。

pivot = pd.pivot_table(tmp_df, values='rating',index=['user_id'], columns=['anime_id'], aggfunc=np.sum)pivot.fillna(0)
Pandas函數(shù)有哪些
Pandas函數(shù)有哪些

12.其他

采樣數(shù)據(jù)框

筆者一直從較大的數(shù)據(jù)框中提取少量樣本。如果frac = 1,則可以在保留索引的情況下隨機重新排行。

anime.sample(frac=0.25)
Pandas函數(shù)有哪些

迭代行索引

在數(shù)據(jù)框中迭代索引和行。

for idx,row inanime[:2].iterrows():     print(idx, row)
Pandas函數(shù)有哪些

啟動jupyter notebook

以高數(shù)據(jù)速率限制啟動jupyter notebook程序。

jupyter notebook &mdash;NotebookApp.iopub_data_rate_limit=1.0e10

“Pandas函數(shù)有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI