丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

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

本文作者: AI研習(xí)社-譯站 2018-07-23 09:36
導(dǎo)語:如果不能有效的管理和整合,過度依賴網(wǎng)上的資源會阻擋我們長期進(jìn)步。

雷鋒網(wǎng) AI 研習(xí)社按:本文為雷鋒網(wǎng)字幕組編譯的技術(shù)博客,原標(biāo)題 Python for Data Science: 8 Concepts You May Have Forgotten,作者為 Conor Dewey。

翻譯 | 龐有振、黃中杰       整理 |  孔令雙  

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

問題

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

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

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

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

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

來源:xkcd

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

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

目標(biāo)

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

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

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

列表推導(dǎo)式 

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

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

來源: Trey Hunner

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

x = [1,2,3,4]

out = []

for item in x:

   out.append(item**2)

print(out)[1, 4, 9, 16]

# vs.

x = [1,2,3,4]

out = [item**2 for item in x]

print(out)[1, 4, 9, 16]

Lambda 函數(shù)

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

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

lambda arguments: expression

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

double = lambda x: x * 2

print(double(5))

10

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

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

# Map

seq = [1, 2, 3, 4, 5]

result = list(map(lambda var: var*2, seq))

print(result)[2, 4, 6, 8, 10]

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

# Filter

seq = [1, 2, 3, 4, 5]

result = list(filter(lambda x: x > 2, seq))

print(result)[3, 4, 5]

Python: Lambda, Map, Filter, Reduce Functions :

https://youtu.be/cKlnR-CB3tk

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

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

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

# np.arange(start, stop, step)

np.arange(3, 7, 2)

array([3, 5])

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

# np.linspace(start, stop, num)

np.linspace(2.0, 3.0, num=5)

array([ 2.0,  2.25,  2.5,  2.75, 3.0])

什么是軸 Axis

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

df.drop('Column A', axis=1)

df.drop('Row A', axis=0)

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

df.shape

(# of Rows, # of Columns)

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

How do I use the "axis" parameter in pandas?:

https://youtu.be/PtO3t6ynH-8

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

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

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

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

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


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

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

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

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

Youtube:

https://youtu.be/XMjSGGej9y8

Pandas 的 Apply 函數(shù)

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

Apply 函數(shù)會對你指定的列或行中每個元素作用一個函數(shù)。你可以想象到這是多么有用,尤其式當(dāng)你對整個 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ù)透視表中的級別存儲在創(chuàng)建的 DataFrame 層次索引和列中。

結(jié)語

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

雷鋒網(wǎng)字幕組編譯。

原文鏈接:

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

號外號外~

一個專注于

AI技術(shù)發(fā)展和AI工程師成長的求知求職社區(qū)

誕生啦!

歡迎大家訪問以下鏈接或者掃碼體驗(yàn)

https://club.leiphone.com/page/home

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

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

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

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說