成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

效率驚人!三大相見恨晚的Pandas函數

大數據
在Pandas中,一些函數意義純粹,但也有一些函數指的是使用Pandas的方式,以及為什么一種方法比另一種更好。這兒有一些節省大量的時間和精力Pandas函數和使用方法,這些效率驚人的神器千萬不要錯過。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)

數據科學領域如此之廣,鮮少有人能精通所有語言、數據庫,筆者盡管已經從事了該行業數年之久,但仍然所知不多。學無止境,變得優秀的方法就是不停下學習的腳步。

在Pandas中,一些函數意義純粹,但也有一些函數指的是使用Pandas的方式,以及為什么一種方法比另一種更好。這兒有一些節省大量的時間和精力Pandas函數和使用方法,這些效率驚人的神器千萬不要錯過。

[[324737]]

itertuples()

確實,它并不是純粹的函數,而是指使用Pandas的更有效方法,是循環訪問數據集的快捷方法。在花時間理解注釋部分之前,可以用更有效的方法計算總列值,在此筆者僅提出一些要點。

下面是一列簡單數據集,數字范圍為1到1百萬。

  1. df =pd.DataFrame(data={ 
  2.    'Number': range(1, 1000000) 
  3. }) 

這是前幾行的示例:

效率驚人!三大相見恨晚的Pandas函數

現在列舉一個錯誤的方式。輸入一個總計變量并將其設置為0. 然后,通過使用iterrows()循環訪問數據集,并在total的基礎上增加當前行的值,與此同時統計操作時間。以下是代碼:

  1. %%timetotal0for _, row in df.iterrows(): 
  2.     total += row['Number'] 
  3.   
  4. total>>> Wall time: 18.7 s 

這項小小的操作歷時將近19秒,而現在有一個更快捷的方法,與上述操作大致相同,但要加iteruples 而不是 iterrows:

  1. %%timetotal0for row in df.itertuples(index=False): 
  2.     total += row.Number 
  3.   
  4. total>>> Wall time: 82.1 ms 

筆者沒有計算時間,但可以看到操作速度提高非常明顯。下次執行循環時請記住這一點。

nlargest()和nsmallest()

筆者計算了兩個緯度/經度對之間的距離(以公里為單位)。那是第一步操作,第二步是選擇距離最小的前N條記錄。

輸入-nsmallest()。nlargest()將返回N個最大值,而nsmallest()將恰好相反。

看看它的實際結果。在實際操作中,筆者準備了一個小的數據集:

  1. df =pd.DataFrame(data={ 
  2.     'Name': ['Bob', 'Mark', 'Josh','Anna', 'Peter', 'Dexter'], 
  3.     'Points': [37, 91, 66, 42, 99, 81] 
  4. }) 

結果如下:

效率驚人!三大相見恨晚的Pandas函數

現在該數據集不是僅僅6行,而是包含了6000行,為了找到表現最好的學生,即分數最高,一種方法是這樣的:

  1. df['Points'].nlargest(3) 

但這不是最佳解決方案,它會導致以下結果,沒有清楚顯示真實姓名:

改善方法如下:

  1. df.nlargest(3,columns='Points'

怎么樣,是不是看起來更棒了:

效率驚人!三大相見恨晚的Pandas函數

以幾乎相同的操作來找到3個表現最差的學生-使用nsmallest()功能:

  1. df.nsmallest(3,columns='Points'

輸出結果如下:

效率驚人!三大相見恨晚的Pandas函數

cut()

這一部分將繼續使用上一部分中的數據集,來回顧一下:

  1. df =pd.DataFrame(data={ 
  2.     'Name': ['Bob', 'Mark', 'Josh','Anna', 'Peter', 'Dexter'], 
  3.     'Points': [37, 91, 66, 42, 99, 81] 
  4. }) 

效率驚人!三大相見恨晚的Pandas函數

cut()函數的基本原理是將值分為不同的區間。下面是最簡單的示例,將從Points屬性創建兩個容器:

  1. pd.cut(df['Points'],bins=2

效率驚人!三大相見恨晚的Pandas函數

現在還看不出效果。但是如何輸入從0到50的區間,以及第二個從50到100的區間呢?聽起來有點麻煩。以下為代碼:

  1. pd.cut(df['Points'],bins=[0, 50, 100]) 

效率驚人!三大相見恨晚的Pandas函數

但是需要注意的是,您要顯示的是Fail而不是(0,50],要顯示Pass而不是(50,100]。你需要這樣做:

  1. pd.cut(df['Points'],bins=[0, 50, 100], labels=['Fail', 'Pass']) 

效率驚人!三大相見恨晚的Pandas函數

對于剛入門的程序員,這些功能將有助于節省時間和精力;如果你是資深程序員,本文或許能幫你加強對這些函數的了解,避免每次都得從頭開始捋,因為這樣毫無意義。

 

責任編輯:趙寧寧 來源: 讀芯術
相關推薦

2021-04-14 09:22:18

Python技巧交換變量值

2020-04-01 14:16:05

Pandastips數據分析

2021-09-28 14:40:03

Python內置庫itertools

2024-01-29 00:51:39

前端開發利器

2017-06-01 09:34:55

R語言包sqldf

2021-08-19 15:02:32

科技軟件電腦

2018-01-25 14:53:20

iPhone技巧刪除照片

2019-08-09 14:13:22

Python知乎程序員

2025-03-24 01:00:00

2015-10-27 10:12:21

r語言命令相見恨晚

2020-05-07 09:02:55

代碼Python開發

2016-12-09 12:50:36

Android

2009-02-20 13:12:23

unixSolaris初學者

2015-07-14 14:09:56

2021-08-20 15:43:54

iPhone手機iOS

2024-08-22 08:57:32

Python技巧參數

2019-02-12 11:22:29

Linux 系統 命令

2023-08-02 20:04:47

2018-02-07 14:54:17

Riverbed應用性能管理數字體驗

2020-03-19 10:12:10

開發技能代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品天堂 | 亚洲福利在线观看 | 亚洲精品99999 | 瑟瑟激情| 亚洲精品视频一区二区三区 | 91天堂网| 成人在线小视频 | 日韩不卡三区 | 国产精品久久777777 | 久久精品一区二区 | 国产重口老太伦 | 国产欧美日韩在线一区 | 一级毛片大全免费播放 | 国产一级一片免费播放 | 亚洲首页 | 日韩综合在线播放 | 一区二区三区高清 | 精品色 | 夜夜骑首页 | 国产色 | 久久综合九色综合欧美狠狠 | 国产精品久久久久久久久久久久午夜片 | 亚洲第一中文字幕 | 国产精品久久久久久久三级 | 九九热这里只有精品在线观看 | 久久综合一区 | 国产一级片91 | 久久久久久综合 | 欧美视频精品 | 亚洲一区二区三区视频 | 久久国产精品视频 | h小视频| 亚洲精品乱码久久久久v最新版 | 一呦二呦三呦国产精品 | 亚洲一区视频在线播放 | 国产九九精品视频 | 最新中文字幕在线 | 国产在线精品一区二区三区 | 日韩在线精品视频 | 久亚州在线播放 | 黄色一级电影免费观看 |