中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

用在數(shù)據(jù)科學(xué)上的 Python:你可能忘記的 8 個(gè)概念

2018-07-25    來源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用
原標(biāo)題 Python for Data Science: 8 Concepts You May Have Forgotten,作者為 Conor Dewey。

 

 

問題

如果你在編程的時(shí)候發(fā)現(xiàn)自己一遍又一遍的搜索同一個(gè)問題、概念或者語法,那么你并不孤單。

我自己也經(jīng)常這樣。

雖然在 StackOverflow 和其他資源網(wǎng)站搜索很正常,但是它對(duì)你的好處比較小,并且會(huì)增加你理解這門語言的困難。

我們生活在看起來有無限信息和無窮免費(fèi)資源的時(shí)代,似乎搜索一下就把問題解決了。然而,這可能既是祝福也是詛咒。如果不能有效的管理和整合,過度依賴這些資源會(huì)阻擋我們長(zhǎng)期進(jìn)步。

 

 

來源:xkcd

我發(fā)現(xiàn)自己有幾次從論壇上復(fù)制代碼并修改,而不是花時(shí)間去學(xué)習(xí)和鞏固我下次可能遇見的知識(shí)點(diǎn)。

這個(gè)方法比較懶。雖然這個(gè)方法可能是短期阻力比較小的一個(gè),但是這最終會(huì)傷害你的成長(zhǎng)、效率和回想語法的能力。

目標(biāo)

最近我在 Udemy 通過了一個(gè)名為「數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中的 Python」的在線課程。通過這一系列的課程,我整理了一些我在 Python 數(shù)據(jù)分析中所忽視的語法和概念。

為了鞏固我對(duì)這些理念的理解和便于你們?cè)?StackOverFlow 進(jìn)行搜索,這里我整理出了我在使用 Python,Numpy,Pandas 中的一些知識(shí)點(diǎn)。

對(duì)于每一個(gè)知識(shí)點(diǎn)我都給出了簡(jiǎn)短的描述和例子。另外,我也給出了視頻和其他的資料的鏈接,這些有助于加深這些知識(shí)點(diǎn)的理解。

列表推導(dǎo)式

在寫循環(huán)的時(shí)候,每次定義一堆的列表是相當(dāng)無聊的。幸運(yùn)的是,Python 內(nèi)置了一種名為列表推導(dǎo)式的方法,這種方法僅僅使用一行代碼就可以解決這個(gè)問題。列表推導(dǎo)式剛開始對(duì)你來說可能有些困難,但是你一旦熟悉,你就會(huì)經(jīng)常使用。

 

 

來源: Trey Hunner

下面的第一個(gè)例子是求每一個(gè)元素平方的的普通寫法,第二個(gè)是列表推導(dǎo)式的寫法。

 

 

Lambda 函數(shù)

有些函數(shù)只需要用幾次就需要定義一個(gè)新函數(shù),你是否對(duì)此厭煩呢?lambda 函數(shù)可以解決這個(gè)問題!Lambda 函數(shù)在 Python 中通常被用來構(gòu)建應(yīng)用次數(shù)比較少的的匿名函數(shù)。也就是讓你構(gòu)建一個(gè)了不帶名字的函數(shù)。

Lambda 函數(shù)的基本語法如下:

lambda arguments: expression

普通函數(shù)能做的,Lambda 函數(shù)也都能做,只要它們能夠?qū)懗梢恍。下面這個(gè)簡(jiǎn)單的例子和視頻能夠更好的讓你理解 Lambda 函數(shù)的強(qiáng)大之處。

 

 

Map 函數(shù)與 Filter 函數(shù)

當(dāng)你掌握了 Lambda 函數(shù),然后將 Lambda 函數(shù)和 map,filter 函數(shù)一起使用,你會(huì)發(fā)現(xiàn)威力巨大。 具體的說,map 函數(shù)通過對(duì)列表中的每一個(gè)元素進(jìn)行操作,將列表轉(zhuǎn)換成一個(gè)新的列表。在下面的這個(gè)例子中,map 函數(shù)將每一個(gè)元素乘以 2,變成一個(gè)新的元素。注意這里的 list 函數(shù)只是簡(jiǎn)單的將輸出結(jié)果轉(zhuǎn)化為 list 類型。

 

 

Filter 函數(shù)類似于 map 函數(shù),但是 filter 函數(shù)通過比較每一個(gè)元素是否為真從原始列表中抽取子集。

 

 

Python: Lambda, Map, Filter, Reduce Functions :https://youtu.be/cKlnR-CB3tk

Arange 函數(shù) 和 Linspace 函數(shù)

快速創(chuàng)建簡(jiǎn)單的 NumPy 數(shù)組,使用 arange 和 linspace 函數(shù)最合適不過了。 它們都有各自特定的功能,但在這里使用(不是使用范圍)在于其產(chǎn)生的 NumPy 數(shù)組,對(duì)于數(shù)據(jù)科學(xué)通常更容易操作。

Arange 函數(shù),根據(jù) start 和 stop 指定的范圍以及 step 設(shè)定的步長(zhǎng),生成指定間隔的均勻間隔序列。除了開始值 start 和結(jié)束值 stop,還可以根據(jù)需要定義步長(zhǎng) step 或數(shù)據(jù)類型。這里需要注意,結(jié)束值是一個(gè)「截止」值,所以不會(huì)包含在生成的數(shù)組中。

 

 

Linspace 函數(shù)非常相似,但略有不同。它根據(jù) start 和 stop 指定的范圍以及 num 設(shè)定的個(gè)數(shù),生成指定個(gè)數(shù)的均勻間隔序列。因此,給定一個(gè)開始值 start 和結(jié)束值 stop,以及個(gè)數(shù)值 num,linspace 函數(shù)將在 NumPy 數(shù)組中均分這個(gè)范圍。這在數(shù)據(jù)可視化和繪圖時(shí)軸的聲明很有用。

 

 

什么是軸 Axis

使用 Pandas 刪除列或?qū)?NumPy 矩陣元素求和時(shí),你可能會(huì)遇到這個(gè)問題。如果沒有,那么之后也一定會(huì)遇到。下面給出刪除列的示例:

 

 

在我真正知道為什么需要聲明軸是什么之前,我編寫了無數(shù)次這行代碼。從上面的代碼中,你可以推斷出,如果對(duì)列進(jìn)行操作需要將 axis 設(shè)置為 1,對(duì)行操作則將其設(shè)置為 0。但這是為什么呢?我喜歡探求原因,或者至少我記得這個(gè):

 

 

查看 Pandas 中 dataframe 的 shape 屬性會(huì)返回一個(gè)元組,其中第一個(gè)值表示行數(shù),第二個(gè)值表示列數(shù)。想想 Python 中的索引方法——行為 0 列為 1,這與我們聲明軸的方法非常相似。很有意思,對(duì)吧?

How do I use the "axis" parameter in pandas?:https://youtu.be/PtO3t6ynH-8

Concat 函數(shù)、Merge 函數(shù)和 Join 函數(shù)

如果你熟悉 SQL,那么這些函數(shù)方法可能會(huì)更容易理解。其實(shí)它們本質(zhì)上都只是以一定方式合并 dataframe 的方法。哪種情況下用哪個(gè)最好很難說,所以讓我們?cè)倩仡櫼幌隆?/p>

Concat 函數(shù)可以在下方或旁邊合并一個(gè)或多個(gè) dataframe(取決于如何定義軸)。

 

 

Merge 函數(shù)在作為主鍵的指定公共列上合并多個(gè) dataframe。

 

 

Join 函數(shù)合并兩個(gè) dataframe 的方法與 merge 函數(shù)類似。但是,它根據(jù)索引合并 dataframe,而不是某些指定列。

 

 

可以通過查看優(yōu)秀的 Pandas 文檔,了解特定用法和更具體的示例,以及你可能遇到的一些特殊用法。

Youtube:https://youtu.be/XMjSGGej9y8

Pandas 的 Apply 函數(shù)

你可以把 apply 函數(shù)想做地圖功能,但它只對(duì) Pandas 的 DataFrame 或者更具體地說是 Series 進(jìn)行操作。如果你不熟悉 Series,其實(shí)它在很多方面都與 NumPy 數(shù)組非常相似。

Apply 函數(shù)會(huì)對(duì)你指定的列或行中每個(gè)元素作用一個(gè)函數(shù)。你可以想象到這是多么有用,尤其式當(dāng)你對(duì)整個(gè) DataFrame 列進(jìn)行歸一化和元素值操作,而不必進(jìn)行循環(huán)。

Python Pandas Youtube 教學(xué)視頻:https://youtu.be/P_q0tkYqvSk

Pivot Tables 數(shù)據(jù)透視表

最后但同樣重要的是數(shù)據(jù)透視表。如果你熟悉 Microsoft Excel,那你可能已經(jīng)在某些方面聽說過數(shù)據(jù)透視表。Pandas 內(nèi)置的 pivot_table 函數(shù)可以將電子表格樣式的數(shù)據(jù)透視表創(chuàng)建為 DataFrame。需要注意的是,數(shù)據(jù)透視表中的級(jí)別存儲(chǔ)在創(chuàng)建的 DataFrame 層次索引和列中。

結(jié)語

我希望你在使用 Python 進(jìn)行數(shù)據(jù)科學(xué)操作時(shí),可以通過經(jīng)常遇到的一些重要但有些棘手的方法、函數(shù)和概念對(duì)上述方法有效地慢慢記憶。就我個(gè)人來說,寫出這些并試圖用簡(jiǎn)單的術(shù)語解釋它們也更加加深了我對(duì)這些知識(shí)的理解。

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

標(biāo)簽: O2O 代碼 數(shù)據(jù)分析 搜索 網(wǎng)站搜索

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:【深度】難道我們真的永遠(yuǎn)也理解不了人工智能嗎?

下一篇:互聯(lián)網(wǎng)變革又十年:2008-2018