旗下產(chǎn)業(yè): A產(chǎn)業(yè)/?A實(shí)習(xí)/?A計(jì)劃
全國(guó)統(tǒng)一咨詢熱線:010-5367 2995
首頁(yè) > 熱門(mén)文章 > 大數(shù)據(jù)分析 > 大數(shù)據(jù)分析使用numpy在pandas dataframe上添加列

大數(shù)據(jù)分析使用numpy在pandas dataframe上添加列

時(shí)間:2020-07-06來(lái)源:lb577.com點(diǎn)擊量:作者:Sissi
時(shí)間:2020-07-06點(diǎn)擊量:作者:Sissi



  當(dāng)我們使用Python進(jìn)行數(shù)據(jù)分析時(shí),有時(shí)可能需要根據(jù)DataFrame其他列中的值向pandas DataFrame添加一列。
 

  盡管這聽(tīng)起來(lái)很簡(jiǎn)單,但是如果我們嘗試使用if-else條件語(yǔ)句來(lái)做,可能會(huì)變得有些復(fù)雜。值得慶幸的是,有一種使用numpy做到這一點(diǎn)的簡(jiǎn)單,好方法!
 

  要學(xué)習(xí)如何使用它,我們來(lái)看一個(gè)特定的數(shù)據(jù)分析問(wèn)題。我們擁有4,000多個(gè)AAA教育推文的數(shù)據(jù)集。附有圖像的推文會(huì)獲得更多的贊和轉(zhuǎn)發(fā)嗎?讓我們做一些分析找出答案!
 

  我們將從導(dǎo)入pandas和numpy開(kāi)始,并加載數(shù)據(jù)集以查看其外觀。

大數(shù)據(jù)分析
 

  我們可以看到我們的數(shù)據(jù)集包含有關(guān)每個(gè)推文的一些信息,包括:
 

  1)date —推文發(fā)布的日期

  2)time —發(fā)推文的時(shí)間

  3)tweet -該推文的實(shí)際文本

  4)mentions -推文中提及的任何其他Twitter用戶

  5)photos —推文中包含的任何圖像的URL

  6)replies_count -在推文上的回復(fù)數(shù)量

  7)retweets_count -推文的轉(zhuǎn)發(fā)數(shù)

  8)likes_count —在推文上的喜歡次數(shù)
 

  我們還可以看到photos數(shù)據(jù)的格式有些奇怪。
 

  使用np.where()添加具有正確/錯(cuò)誤條件的pandas列
 

  對(duì)于我們的分析,我們只想查看帶有圖像的推文是否獲得更多的交互,因此我們實(shí)際上不需要圖像URL。讓我們嘗試創(chuàng)建一個(gè)名為的新列hasimage,該列將包含布爾值- True如果該tweet包含圖像,F(xiàn)alse則不包含圖像。
 

  為此,我們將使用numpy的內(nèi)置where()函數(shù)。此函數(shù)按順序接受三個(gè)參數(shù):我們要測(cè)試的條件,條件為true時(shí)分配給新列的值以及條件為false時(shí)分配給新列的值??雌饋?lái)像這樣:

大數(shù)據(jù)分析
 

  在我們的數(shù)據(jù)中,我們可以看到?jīng)]有圖像的推文始終[]在該photos列中具有值。我們可以使用信息并np.where()創(chuàng)建新列hasimage,如下所示:

大數(shù)據(jù)分析
 

  在上方,我們可以看到我們的新列已添加到我們的數(shù)據(jù)集,并且已正確標(biāo)記了tweet,其中包括圖像為T(mén)rue,其他圖像為False。
 

  現(xiàn)在我們有了hasimage專(zhuān)欄,讓我們快速制作幾個(gè)新的DataFrame,一個(gè)用于所有圖像推文,一個(gè)用于所有無(wú)圖像推文。我們將使用布爾過(guò)濾器進(jìn)行此操作:

大數(shù)據(jù)分析
 

  現(xiàn)在,我們已經(jīng)創(chuàng)建了那些,我們可以使用內(nèi)置的數(shù)學(xué)函數(shù).mean()來(lái)快速比較每個(gè)DataFrame中的推文。
 

  我們將使用print()語(yǔ)句使結(jié)果更易于閱讀。我們還需要記住使用str()來(lái)將.mean()計(jì)算結(jié)果轉(zhuǎn)換為字符串,以便可以在我們的打印語(yǔ)句中使用它:

大數(shù)據(jù)分析
 

  根據(jù)這些結(jié)果,似乎包括圖像可能會(huì)促進(jìn)AAA教育的更多社群媒體的交互。有圖片的推文的平均贊和轉(zhuǎn)發(fā)次數(shù)是沒(méi)有圖片的推文的三倍。
 

  添加條件更復(fù)雜的pandas專(zhuān)欄
 

  這種方法效果很好,但是如果我們想添加一個(gè)條件更復(fù)雜的新列(超出True和False的條件)怎么辦?
 

  例如,為了更深入地研究這個(gè)問(wèn)題,我們可能要?jiǎng)?chuàng)建一些交互性“層”,并評(píng)估到達(dá)每個(gè)層的推文所占的百分比。為了簡(jiǎn)單起見(jiàn),讓我們使用Likes來(lái)衡量交互性,并將tweet分為四個(gè)層次:
 

  1)tier_4 -2個(gè)或更少的喜歡

  2)tier_3 — 3-9個(gè)贊

  3)tier_2 — 10-15個(gè)贊

  4)tier_1 — 16個(gè)贊
 

  為此,我們可以使用稱為的函數(shù)np.select()。我們給它兩個(gè)參數(shù):一個(gè)條件列表,以及一個(gè)我們想要分配給新列中每一行的值的對(duì)應(yīng)列表。
 

  這意味著順序很重要:如果conditions滿足列表中的第一個(gè)條件,則列表中的第一個(gè)值values將分配給該行的新列。如果滿足第二個(gè)條件,則將分配第二個(gè)值,等等。
 

  讓我們看一下它在Python代碼中的外觀:

大數(shù)據(jù)分析
大數(shù)據(jù)分析
 

  太棒了!我們創(chuàng)建了另一個(gè)新列,該列根據(jù)我們的(雖然有些武斷)層排名系統(tǒng)對(duì)每個(gè)tweet進(jìn)行了分類(lèi)。
 

  現(xiàn)在,我們可以使用它來(lái)回答有關(guān)我們的數(shù)據(jù)集的更多問(wèn)題。例如:1級(jí)和4級(jí)推文中有多少百分比具有圖像?

大數(shù)據(jù)分析
 

  在這里,我們可以看到盡管圖像似乎有所幫助,但它們似乎并不是成功所必需的。
 

  盡管這是一個(gè)非常膚淺的分析,但我們已經(jīng)在這里實(shí)現(xiàn)了我們的真正目標(biāo):根據(jù)有關(guān)現(xiàn)有列中值的條件語(yǔ)句向pandas DataFrames添加列。
 

  當(dāng)然,這是可以以多種方式完成的任務(wù)。np.where()而np.select()只是許多潛在的兩種方法。

 

預(yù)約申請(qǐng)免費(fèi)試聽(tīng)課

填寫(xiě)下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽(tīng)!怕錢(qián)不夠?可先就業(yè)掙錢(qián)后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!

?2007-2021/北京漫動(dòng)者教育科技有限公司版權(quán)所有
備案號(hào):京ICP備12034770號(hào)

?2007-2022/ lb577.com 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

京公網(wǎng)安備 11010802035704號(hào)

網(wǎng)站地圖