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

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

開發 后端
為了進一步鞏固我自己對這些概念的理解,也為了幫大家節省一下每次上網搜索的時間,我在這里整理了一下自己使用 Python、NumPy 和 Pandas 時遇到的一些常見的小問題,希望對你有幫助。

每個人都會遇到這個問題。

學習數據科學的過程,從來就不是一帆風順的。在寫代碼的時候,你是否也經常不得不反復搜索同一個問題,同一個概念,甚至同一個語法結構的特性呢?對,你不是一個人在戰斗。

我也一直在同樣的情況里掙扎著。

雖然遇到問題上 StackOverflow 搜一搜是相當正常的,但比起切實掌握理解語言特性的情況,不斷重復的遇到問題+搜來搜去,會嚴重拖慢你的速度。

如今,無窮無盡的免費資源時時刻刻充斥著互聯網,一搜即得。然而,對初學者,這既是一種祝福,也是一個詛咒。如果不經過有效管理,過度依賴網絡資源會讓你養成糟糕的習慣,從長遠上影響了你的成長。

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

歐剃漢化

拿我自己來說,我常常從許多內容差不多的帖子里復制代碼下來使用,而不愿意花時間和精力去學習鞏固其中所需的技術概念,以便下次能自己寫出需要的代碼。

這是個懶辦法,雖然短期內看起來它能簡單快速地搞定問題,但從長遠上看,這個做法會嚴重影響你的成長,破壞你的創造性,并從根本上動搖你回想某些語法特性的能力(這在技術面試的時候可是致命的)。

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

歐剃漢化

那我要怎么解決呢?

為了進一步鞏固我自己對這些概念的理解,也為了幫大家節省一下每次上網搜索的時間,我在這里整理了一下自己使用 Python、NumPy 和 Pandas 時遇到的一些常見的小問題,希望對你有幫助。

01、只要一行代碼的列表生成器

假如每次你想要生成個列表,都要寫個循環,是不是很煩呢?好在 Python 已經有一個內建方法,只要一行代碼就能搞定這個問題。如果你不熟悉這個語法,可能理解起來會有點難度,不過一旦你習慣這個技術之后,你一定會愛不釋手的!

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

動圖:如何將一個循環改成列表生成式(來源:Trey Hunner )

上面這個動圖就是一個很好的例子,原來的代碼就是采用 for 循環生成列表的方法,而圖上一步一步將它改造成了一個只有一行代碼的列表生成式,再也不用循環啦。是不是很簡潔?

下面是另外一個對比范例:

使用循環:

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

輸出的結果是 [1, 4, 9, 16]

使用生成式:

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

輸出的結果也是 [1, 4, 9, 16]

02、Lambda 表達式

明明這個函數用不了幾次,每次都要寫一大串函數構建代碼,是不是很累?別怕,Lambda 表達式來救你!Lambda 表達式能方便地創造簡單、一次使用而且匿名的函數對象。基本上,它們讓你無需費心構造一個函數,而是直接使用這個函數。

Lambda 表達式的基本語法是:

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

歐剃漢化,

要記住,Lambda 表達式創造的函數和普通的 def 構建的函數沒什么不同,只不過函數體只有單獨一個表達式而已。看看下面這個例子:

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

輸出的結果是 10

03、Map 和 Filter 函數

一旦你掌握了 Lambda 表達式,將它們與 map 或 filter 函數一起使用,可謂是威力無比。

具體來說, map() 函數接收一個列表,和一個函數,它對列表里的每個元素調用一個函數進行處理,再將結果放進一個新列表里。下面這個例子中,map() 函數遍歷 seq 中的每個元素,把它乘2,再把結果放入一個新列表,***返回這個列表。最外面一層 list() 函數是把 map() 返回的對象轉換成列表格式。

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

輸出的結果是 [2, 4, 6, 8, 10]

而 filter() 函數略有不同,它接收一個列表,和一個規則函數,在對列表里的每個元素調用這個規則函數之后,它把所有返回值為假的元素從列表中剔除,然后返回這個過濾后的子列表。

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

輸出的結果是 [3, 4, 5]

04、Arange 和 Linspace 函數

為了快速方便地生成 numpy 的數組,你一定得熟悉 arange() 和 linspace() 這兩個函數。這兩個函數分別有自己的特定用法,不過對我們來說,它們都能很好地生成 numpy 數組(而不是用 range() ),這在數據科學的分析工作上可是相當好用的。

arange() 函數按照指定的步長返回一個等差數列。除開始和結束值之外,你還可以自定義步長和數據類型。請注意,給定的結束值參數是不會被包含在結果內的。

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

輸出的是一個數組對象: array([3, 5])

linspace() 函數的用法也很類似,不過有一點小小的不同。 linspace() 返回的是將給定區間進行若干等分以后的等分點組成的數列。所以你傳入的參數包括開始值、結束值,以及具體多少等分。linspace() 將這個區間進行等分后,把開始值、結束值和每個等分點都放進一個 NumPy 數組里。這在做數據可視化以及繪制坐標軸的時候都很有用。

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

輸出的是一個數組對象: array([ 2.0, 2.25, 2.5, 2.75, 3.0])

05、Pandas 中坐標軸(axis 參數)的意義

在 Pandas 里要篩掉某一列,或是在 NumPy 矩陣里要對數據求和的時候,你可能已經遇到過這個 axis 參數的問題。如果你還沒見過,那提前了解一下也無妨。比如,對某個 Pandas 表這樣處理:

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

在我真正理解之前,我基本上每次要用到 drop 的時候,都得去重新查詢一下哪個 axis 的值對應的是哪個,多到我自己都數不清了。正如上面這個示例,你大概已經看出,如果要處理列,axis 要設成 1,如果處理行,axis 要設成 0,對吧。但這是為什么呢?我最喜歡的一個解釋(或者是我如何記住這一點的)是這樣的:

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

獲取 Pandas 數據表對象的 shape 屬性,你將獲得一個元組,元組的***個元素是數據表的行數,第二個元素是數據表的列數。想想 Python 里這兩個元素的下標吧,前面一個是 0,后面一個是 1,對不對?所以對于 axis 參數,0 就是前面的行數,1 就是后面的列數,怎么樣,好記吧?

06、用 Concat、Merge 和 Join 來合并數據表

如果你熟悉 SQL,這幾個概念對你來說就是小菜一碟。不過不管怎樣,這幾個函數從本質上來說不過就是合并多個數據表的不同方式而已。當然,要時刻記著什么情況下該用哪個函數也不是一件容易的事,所以,讓我們一起再回顧一下吧。

concat() 可以把一個或多個數據表按行(或列)的方向簡單堆疊起來(看你傳入的 axis 參數是 0 還是 1 咯)。

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

merge() 將會以用戶指定的某個名字相同的列為主鍵進行對齊,把兩個或多個數據表融合到一起。

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

join()和 merge() 很相似,只不過 join() 是按數據表的索引進行對齊,而不是按某一個相同的列。當某個表缺少某個索引的時候,對應的值為空(NaN)。

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

有需要的話,你還可以查閱Pandas 官方文檔 ,了解更詳細的語法規則和應用實例,熟悉一些你可能會碰到的特殊情況。

07、Apply 函數

你可以把 apply() 當作是一個 map() 函數,只不過這個函數是專為 Pandas 的數據表和 series 對象打造的。對初學者來說,你可以把 series 對象想象成類似 NumPy 里的數組對象。它是一個一維帶索引的數據表結構。

apply() 函數作用是,將一個函數應用到某個數據表中你指定的一行或一列中的每一個元素上。是不是很方便?特別是當你需要對某一列的所有元素都進行格式化或修改的時候,你就不用再一遍遍地循環啦!

這里就舉幾個簡單的例子,讓大家熟悉一下基本的語法規則:

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

08、數據透視表(Pivot Tables)

***也最重要的是數據透視表。如果你對微軟的 Excel 有一定了解的話,你大概也用過(或聽過)Excel 里的“數據透視表”功能。Pandas 里內建的 pivot_table() 函數的功能也差不多,它能幫你對一個數據表進行格式化,并輸出一個像 Excel 工作表一樣的表格。實際使用中,透視表將根據一個或多個鍵對數據進行分組統計,將函數傳入參數 aggfunc 中,數據將會按你指定的函數進行統計,并將結果分配到表格中。

下面是幾個 pivot_table() 的應用例子:

學習Python過程中,注重這8個小細節,讓你在大數據領域事半功倍

 

總結

以上就是我在自學過程中經常遇到的幾個問題,及其理解方法。就我個人來說,把這些概念寫下來,并用盡可能簡單的語句描述它們,再分享給大家的整個過程,也讓我更加深入的理解和掌握這些技術。

***,我希望,或許以后你和數據科學中這些難以捉摸的方法、函數以及概念斗智斗勇的時候,今天看到的一些知識能派上點用場。

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2018-11-19 11:43:13

Python數據函數

2023-07-07 07:53:26

Python異常處理

2023-11-27 19:22:24

Python庫編程語言

2021-01-26 07:20:26

Final關鍵字類變量

2021-02-17 13:35:17

finalgetJava

2009-05-13 09:11:00

2018-09-14 08:50:12

人工智能大數據

2017-07-17 14:15:43

大數據人工智能注意要點

2020-06-28 14:23:33

正則表達式前端開發

2020-06-28 08:26:07

正則表達式編程

2024-09-30 09:56:36

CSV文件Python

2020-02-24 15:59:38

GitHub代碼開發者

2024-01-31 16:36:53

2020-10-27 12:06:17

MathJavaScript對象

2019-04-12 09:45:57

Web網絡線程性能

2012-11-08 10:38:06

產品經理項目管理

2011-07-06 16:00:28

ASP

2012-10-31 10:30:22

產品經理

2020-04-20 17:43:28

Java代碼優化開發

2016-08-25 08:57:21

RDBMS數據NoSQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 激情一区二区三区 | 欧美在线观看一区 | 一区二区视频在线 | 亚洲国产精品成人无久久精品 | 91在线网站 | 国产免费拔擦拔擦8x高清 | 天天操妹子 | 这里只有精品999 | 国产视频91在线 | 欧美极品在线播放 | 日本成人中文字幕在线观看 | 亚洲精品成人在线 | 欧美一区二区三区久久精品视 | 欧美日韩亚洲视频 | 91精品国产麻豆 | 久久精品免费一区二区三 | 亚洲国产精品一区 | 99精品国产一区二区三区 | 欧美综合国产精品久久丁香 | 国产日韩欧美电影 | 91精品国产91久久久久久不卞 | 免费视频久久 | 男人天堂网址 | 在线视频日韩精品 | 日韩视频精品在线 | 玖玖视频 | 国产精品一区二区三区在线 | 黄色大片视频 | 色综合天天天天做夜夜夜夜做 | 一区二区三区免费观看 | 亚洲欧美在线观看 | 国产欧美精品一区二区色综合 | 国产激情毛片 | 精品视频在线免费观看 | 亚洲一区二区久久 | 国产精品久久久久久婷婷天堂 | 一区欧美 | 亚洲九色| 激情视频中文字幕 | 欧美日韩在线免费 | 中文字字幕一区二区三区四区五区 |