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

用Python做數據科學時容易忘記的八個要點!

大數據 數據分析
網上搜索答案是一種懶惰的行為,雖然在短期內它可能是最簡便的途徑,但它終究不利于你的成長,并且會降低工作效率和對語法的熟知能力。下面,我們就來總結一下用Python做數據科學時容易忘記的八個要點!

[[237573]]

 

 

大數據文摘出品

 

 

編譯:雪清、陳同學、Alieen

 

如果你發覺自己在編程時一次又一次地查找相同的問題、概念或是語法,你不是一個人!

雖然我們在StackOverflow或其他網站上查找答案是很正常的事情,但這樣做確實比較花時間,也讓人懷疑你是否完全理解了這門編程語言。

我們現在生活的世界里,似乎有著***的免費資源,而你只需要一次搜索即可獲得。然而,這既是這個時代的幸事,也是一種詛咒。如果沒能有效利用資源,而是對它們過度依賴,你就會養成不良的習慣,長期處于不利境地。

當我谷歌一個問題,發現有人提了同樣問題,但下面只有一個回答,而且2003年以后就再也沒有新的答案的時候,我真是和那個提問者同病相憐!弱小,可憐又無助!

[[237574]]

“你是誰!你在哪兒!***你發現了啥!”

就個人而言,我發現自己也是多次從類似的技術問答中找代碼(見上文插圖漫畫);而不是花時間學習和鞏固概念,以便下次可以自己把代碼寫出來。

網上搜索答案是一種懶惰的行為,雖然在短期內它可能是最簡便的途徑,但它終究不利于你的成長,并且會降低工作效率和對語法的熟知能力(咳咳,面試的時候這些知識很重要)。

目標

最近,我一直在Udemy學習名為Python for Data Science and Machine Learning的數據科學在線課程。在該系列課程的早期課件中,我想起了用Python做數據分析時一直被我忽略的一些概念和語法。

為了一勞永逸地鞏固我對這些概念的理解,并為大家免去一些StackOverflow的搜索,我在文章中整理了自己在使用Python,NumPy和Pandas時總是忘記的東西。

我為每個要點提供了簡短的描述和示例。為了給讀者帶來福利,我還添加了視頻和其他資源的鏈接,以便大家更深入地了解各個概念。

單行List Comprehension

每次需要定義某種列表時都要寫for循環是很乏味的,好在Python有一種內置的方法可以用一行代碼解決這個問題。該語法可能有點難以理解,但是一旦熟悉了這種技巧,你就會經常使用它。

* Line 8是對for loop的單行簡化

請參閱上圖和下文的示例,比較一下在創建列表時,你通常使用的for循環樣板和以單行代碼創建這二者之間的差別。

  1. x = [1,2,3,4] 
  2. out = [] 
  3. for item in x: 
  4.     out.append(item**2) 
  5. print(out) 
  6.  
  7. [1, 4, 9, 16] 
  8.  
  9. # vs. 
  10.  
  11. x = [1,2,3,4] 
  12. out = [item**2 for item in x] 
  13. print(out) 
  14.  
  15. [1, 4, 9, 16] 

Lambda 函數

編程的過程中經常為了實現***的功能,創建一個又一個階段性的函數,這些函數往往就只用一兩次。這個過程很煩人。這時候Lambda函數來搭救你了!

Lambda函數用于在Python中創建小型的,一次性的和匿名的函數對象。基本上,它們可以讓你“在不創建新函數的情況下”創建一個函數。

lambda函數的基本語法如下:

  1. lambda arguments: expression 

所以,只要給它一個表達式,lambda函數可以執行所有常規函數可執行的操作。請看下面的簡單示例和后文中的視頻,以更好地感受lambda函數強大的功能。

  1. double = lambda x: x * 2 
  2. print(double(5)) 
  3.  
  4. 10 

Map和Filter

一旦掌握了lambda函數,并學會將它們與map和filter函數配合使用,你將擁有一個強大的工具。

具體來說,map函數接受一個列表并通過對每個元素執行某種操作來將其轉換為新列表。在下面的示例中,它遍歷每個元素并將其乘以2的結果映射到新列表。請注意,這里的list函數只是將輸出轉換為列表類型。

  1. # Map 
  2. seq = [1, 2, 3, 4, 5] 
  3. result = list(map(lambda var: var*2, seq)) 
  4. print(result) 
  5.  
  6. [2, 4, 6, 8, 10] 

filter函數需要的輸入是列表和規則,非常類似于map,但它通過將每個元素與布爾過濾規則進行比較來返回原始列表的子集。

  1. # Filter 
  2. seq = [1, 2, 3, 4, 5] 
  3. result = list(filter(lambda x: x > 2, seq)) 
  4. print(result) 
  5.  
  6. [3, 4, 5] 

 

Arange和Linspace

要創建快速簡單的NumPy數組,可以查看arange和linspace函數。它們都有特定的用途,但在這里我們看中的是它們都輸出Numpy數組(而非其使用范圍),這通常更容易用于數據科學。

Arange在給定的范圍內返回間隔均勻的值。除了起始值和終止值,你還可以根據需要定義步長或數據類型。請注意,終止值是一個“截止”值,因此它不會被包含在數組輸出中。

  1. # np.arange(start, stop, step) 
  2. np.arange(3, 7, 2) 
  3.  
  4. array([3, 5]) 

Linspace與Arange非常相似,但略有不同。Linspace是在指定的范圍內返回指定個數的間隔均勻的數字。所以給定一個起始值和終止值,并指定返回值的個數,linspace將根據你指定的個數在NumPy數組中劃好等分。這對于數據可視化和在定義圖表坐標軸時特別有用。

  1. # np.linspace(start, stop, num) 
  2. np.linspace(2.0, 3.0, num=5
  3.  
  4. array([ 2.0,  2.25,  2.5,  2.75, 3.0]) 

Axis的真正意義

在Pandas中刪除列或在NumPy矩陣中對值進行求和時,可能會遇到這問題。即使沒有,那么你也肯定會在將來的某個時候碰到。我們現在來看看刪除列的示例:

  1. df.drop('Row A', axis=0
  2. df.drop('Column A', axis=1

在我知道自己為什么要這樣定義坐標軸之前,我不知道我寫了多少次這行代碼。你可以從上面看出,如果要處理列,就將axis設為1,如果要處理行,則將其設為0。

但為什么會這樣呢?我記得我最喜歡的解釋是這個:

  1. df.shape 
  2. (# of Rows, # of Columns) 

從Pandas的dataframe調用shape屬性時會返回一個元組,其中***個值表示行數,第二個值表示列數。如果你想想在Python中是如何建立索引的,即行為0,列為1,會發現這與我們定義坐標軸值的方式非常相似。很有趣吧!

Concat, Merge, 和Join

如果你熟悉SQL,那么這些概念對你來說可能會更容易。無論如何,這些功能基本上就是以特定方式組合dataframe的方法。可能很難評判在什么時候使用哪個***,所以讓我們都回顧一下。

Concat允許用戶在其下方或旁邊附加一個或多個dataframe(取決于你如何定義軸)。

Merge可以基于特定的、共有的主鍵(Primary Key)組合多個dataframe。

Join,就像merge一樣,可以組合兩個dataframe。但是,它根據它們的索引進行組合,而不是某些特定的主鍵。

大家可以查看很有幫助的Pandas文檔,了解語法和具體示例和你可能會遇到的特殊情況。

Pandas Apply

apply類似于map函數,不過它是用于Pandas DataFrames的,或者更具體地說是用于Series的。如果你不熟悉也沒關系,Series在很大程度上與NumPy中的陣列(array)非常相似。

Apply會根據你指定的內容向列或行中的每個元素發送一個函數。你可以想象這是多么有用,特別是在對整個DataFrame的列處理格式或運算數值的時候,可以省去循環。

透視表

***要說到的是透視表。如果你熟悉Microsoft Excel,那么你可能已經聽說過數據透視表。Pandas內置的pivot_table函數將電子表格樣式的數據透視表創建為DataFrame。請注意,透視表中的維度存儲在MultiIndex對象中,用來聲明DataFrame的index和columns。

結語

我的這些Python編程小貼士就到此為止啦。我希望我介紹的這些在使用Python做數據科學時經常遇到的重要但又有點棘手的方法、函數和概念能給你帶來幫助。

而我自己在整理這些內容并試圖用簡單的術語來闡述它們的過程中也受益良多。

相關報道:

https://towardsdatascience.com/python-for-data-science-8-concepts-you-may-have-forgotten-i-did-825966908393

【本文是51CTO專欄機構大數據文摘的原創譯文,微信公眾號“大數據文摘( id: BigDataDigest)”】

     大數據文摘二維碼

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2022-08-26 14:41:47

Python數據科學開源

2024-12-30 07:47:15

Python科學計算

2021-06-29 10:03:45

數據科學機器學習算法

2022-08-16 10:32:08

Python數據科學

2022-03-14 13:47:06

零信任網絡安全

2023-04-18 10:20:56

2018-08-21 05:03:04

NV overlay網絡虛擬化網絡

2024-06-27 10:45:27

2022-10-30 16:27:38

Java移動應用程序開發

2024-08-22 15:07:24

2015-09-02 13:15:31

Python

2022-04-29 14:49:27

數據質量數據

2025-04-27 08:35:00

Python數據分析編程

2018-10-08 08:42:06

編程語言DjangoPython

2011-07-06 08:49:05

程序員

2024-02-29 13:00:56

2022-12-01 16:53:27

NPM技巧

2013-11-01 11:06:33

數據

2022-03-18 21:27:36

Python無代碼

2024-01-25 11:28:18

CIO數據戰略IT領導者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费成人在线网 | 国产精品成人国产乱 | 粉嫩在线 | 精品国产乱码久久久久久丨区2区 | 亚洲一级黄色 | 日韩在线免费视频 | 亚洲网站在线 | 亚洲免费三区 | 欧美性生活免费 | 在线视频成人 | 希岛爱理在线 | 一区二区在线 | 国产精品久久久久久久久久久久冷 | 国产美女在线观看 | 久久精品欧美视频 | 国产精品7777777 | h片在线免费观看 | 国产精品欧美一区二区三区不卡 | 91久久久久久 | 久久久久国| 国产jizz女人多喷水99 | 在线观看亚洲专区 | 极品一区 | www.日韩系列| 美女国内精品自产拍在线播放 | 亚洲欧美综合精品久久成人 | 免费三级av | 断背山在线观看 | 韩国精品一区二区三区 | 91久久伊人 | 亚洲一区 | 国产有码| 米奇狠狠鲁 | 欧美精品一区二区三区在线播放 | 精品国产乱码久久久久久影片 | 午夜欧美一区二区三区在线播放 | 成人精品国产 | 国产高清一区二区三区 | 97国产超碰 | yiren22 亚洲综合| 午夜视频在线观看网址 |