自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)科學(xué)家和軟件工程師都在用的Pandas函數(shù)有哪些?

開發(fā) 前端 大數(shù)據(jù)
軟件工程師該像是索引,而不是教科書。你無(wú)法記住所有內(nèi)容,但得知道如何快速查找它們。能夠快速查找和使用函數(shù)讓我們?cè)诰帉懘a時(shí)可以達(dá)到一定的流暢程度。因此筆者創(chuàng)建了這份自己每天都在使用的、用于構(gòu)建網(wǎng)絡(luò)應(yīng)用程序和機(jī)器學(xué)習(xí)模型的函數(shù)備忘清單。

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)

軟件工程師該像是索引,而不是教科書。你無(wú)法記住所有內(nèi)容,但得知道如何快速查找它們。

[[322525]]

能夠快速查找和使用函數(shù)讓我們?cè)诰帉懘a時(shí)可以達(dá)到一定的流暢程度。因此筆者創(chuàng)建了這份自己每天都在使用的、用于構(gòu)建網(wǎng)絡(luò)應(yīng)用程序和機(jī)器學(xué)習(xí)模型的函數(shù)備忘清單。

它不算詳盡,但包含了筆者最常使用的函數(shù)、示例,以及該何時(shí)使用的有效見解。

1.安裝

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

接下來(lái)運(yùn)行這些指令,應(yīng)該能重復(fù)得出以下任一函數(shù)的結(jié)果。 

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

2.輸入

輸入CSV(逗號(hào)分隔值)

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

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

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

 數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

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

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

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

 數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些? 

  1. df.head() 

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

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

  1. anime_copy =anime.copy(deep=True 
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

3.查看和檢驗(yàn)

獲取頂部或底部的n項(xiàng)記錄

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

  1. anime.head(3) 
  2. rating.tail(1)  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

計(jì)算行數(shù)

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

  1. len(df) 
  2. #=> 3 

計(jì)算唯一行

計(jì)算一列中的唯一值。 

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

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

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

  1. anime.info()  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

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

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

  1. anime.describe()  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

獲取值總和

獲取特定列的值總和。 

  1. anime.type.value_counts()  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

4.輸出

保存為CSV格式

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

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

5.選取

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

需要將列中的值放入X和y變量中以適應(yīng)機(jī)器學(xué)習(xí)模型時(shí),此方法有效。 

  1. anime['genre'].tolist() 
  2. anime['genre' 
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?
  1. anime[‘genre’].tolist()  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?
  1. anime[‘genre’] 

獲取索引值列表

通過(guò)索引創(chuàng)建數(shù)值列表。請(qǐng)注意,這里使用了anime_modified數(shù)據(jù)框,因?yàn)樗饕蹈佑腥ぁ?nbsp;

  1. anime_modified.index.tolist() 

 數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

獲取列值列表 

  1. anime.columns.tolist() 

 數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些? 

6.添加/刪除

用設(shè)置值附加新列

偶爾,當(dāng)測(cè)試集和訓(xùn)練集在兩個(gè)單獨(dú)的數(shù)據(jù)框中,并想在組合它們之前分別標(biāo)記出行與集的對(duì)應(yīng)關(guān)系時(shí),筆者會(huì)這樣做。 

  1. anime['train set'] = True 

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

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

  1. anime[['name','episodes']]  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

刪除指定列

刪除指定列用于僅需刪除幾列時(shí)。否則,寫出全部?jī)?nèi)容可能會(huì)很乏味,筆者更喜歡前者,刪除指定列。 

  1. anime.drop(['anime_id''genre','members'], axis=1).head()  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

添加其他行總和的一行

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

計(jì)算總和或平均值時(shí),采用同樣的邏輯,如: 

  1. df.mean(axis=0). 
  2. f = pd.DataFrame([[1,'Bob',8000], 
  3.                  [2,'Sally', 9000], 
  4.                  [3,'Scott', 20]],columns=['id','name''power level'])df.append(df.sum(axis=0),ignore_index=True 
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

7.合并

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

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

  1. df1 = anime[0:2]df2 =anime[2:4]pd.concat([df1, df2], ignore_index=True 
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

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

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

  1. rating.merge(anime,left_on=’anime_id’, right_on=’anime_id’, suffixes=(‘_left’, ‘_right’))  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

8.篩選

檢索匹配索引值的行

anime_modified中的索引值是動(dòng)漫的名稱。請(qǐng)注意,如何使用這些名稱來(lái)獲取特定列。

  1. anime_modified.loc[['Haikyuu!!Second Season','Gintama']]  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

通過(guò)編號(hào)索引值來(lái)檢索行

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

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

  1. anime_modified.iloc[0:3]  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

獲取行

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

  1. anime[anime['type'].isin(['TV','Movie'])]  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

拆分?jǐn)?shù)據(jù)框

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

  1. anime[1:3]  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

通過(guò)值篩選

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

  1. anime[anime['rating'] > 8]  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

9.排序

排序函數(shù)sort_values

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

  1. anime.sort_values('rating',ascending=False 
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

10.匯總

分組和計(jì)數(shù)

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

  1. anime.groupby('type').count()  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

以不同方式對(duì)列進(jìn)行分組和匯總

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

  1. anime.groupby(["type"]).agg({ 
  2.   "rating""sum"
  3.   "episodes":"count"
  4.   "name""last" 
  5. }).reset_index() 

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

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

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

  1. tmp_df = rating.copy() 
  2. tmp_df.sort_values('user_id', ascending=True, inplace=True
  3. tmp_df = tmp_df[tmp_df.user_id < 10] 
  4. tmp_df = tmp_df[tmp_df.anime_id < 30] 
  5. 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)  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

11.整理

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

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

  1. pivot = pd.pivot_table(tmp_df, values='rating',index=['user_id'], columns=['anime_id'], aggfunc=np.sum)pivot.fillna(0)  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

12.其他

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

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

  1. anime.sample(frac=0.25)  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

迭代行索引

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

  1. for idx,row inanime[:2].iterrows(): 
  2.     print(idx, row)  
數(shù)據(jù)科學(xué)家和軟件工程師都在用的pandas函數(shù)有哪些?

啟動(dòng)jupyter notebook

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

  1. jupyter notebook —NotebookApp.iopub_data_rate_limit=1.0e10 

你比較喜歡哪些函數(shù)呢?

 

責(zé)任編輯:華軒 來(lái)源: 讀芯術(shù)
相關(guān)推薦

2020-05-29 10:16:45

數(shù)據(jù)科學(xué)數(shù)據(jù)科學(xué)家軟件工程師

2018-03-20 13:04:55

GDPR數(shù)據(jù)科學(xué)數(shù)據(jù)保護(hù)

2019-02-25 22:57:22

數(shù)據(jù)工程師數(shù)據(jù)科學(xué)機(jī)器學(xué)習(xí)

2020-05-15 14:17:05

數(shù)據(jù)科學(xué)家軟件工程師

2019-04-26 14:27:07

大數(shù)據(jù)數(shù)據(jù)科學(xué)數(shù)據(jù)工程師

2020-07-19 15:17:41

機(jī)器學(xué)習(xí)技術(shù)工程師

2020-03-13 14:13:48

機(jī)器學(xué)習(xí)數(shù)據(jù)科學(xué)編程

2020-05-11 22:44:43

Python開發(fā)軟件工程師

2020-12-08 05:47:26

數(shù)據(jù)科學(xué)家機(jī)器學(xué)習(xí)工程師油管博主

2017-08-04 15:53:10

大數(shù)據(jù)真?zhèn)螖?shù)據(jù)科學(xué)家

2020-09-19 17:40:29

編寫代碼工具技術(shù)

2020-04-29 13:45:42

機(jī)器學(xué)習(xí)ML數(shù)據(jù)科學(xué)家

2016-08-02 17:00:12

Hadoop大數(shù)據(jù)系統(tǒng)

2019-09-11 14:34:13

排序算法數(shù)據(jù)科學(xué)

2018-08-19 15:39:56

數(shù)據(jù)分析數(shù)據(jù)科學(xué)數(shù)據(jù)工程師

2019-04-09 09:00:01

數(shù)據(jù)科學(xué)代碼編寫

2018-10-16 14:37:34

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析數(shù)據(jù)科學(xué)

2020-06-12 08:15:40

計(jì)算機(jī)科學(xué)碼農(nóng)技術(shù)

2010-08-10 13:29:58

軟件工程師

2013-10-21 10:11:31

大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)