翻译|给数据科学家的10个提示和技巧Vol.1
原文:10 Tips And Tricks For Data Scientists Vol.1
譯者:趙西西
原博客簡(jiǎn)介:Predictive Hacks是與數(shù)據(jù)科學(xué)相關(guān)的在線資源中心。該博客是由一群數(shù)據(jù)科學(xué)家運(yùn)營(yíng),專注于講解在各種領(lǐng)域如何運(yùn)用大數(shù)據(jù)技術(shù)(從機(jī)器學(xué)習(xí)和人工智能到業(yè)務(wù)領(lǐng)域)。
1 引言
這一系列對(duì)數(shù)據(jù)科學(xué)世界中常見(jiàn)的任務(wù)提供了一些代碼作為參考。本文主要涵蓋 Python、R、Unix、Excel、Git和Docker等語(yǔ)言的提示(Tips)。這一期主要展示在不同應(yīng)用場(chǎng)景下的10個(gè)提示。
2??R
2.1 利用dplyr包實(shí)現(xiàn)多個(gè)列上連接數(shù)據(jù)框
dplyr包允許我們?cè)诙鄠€(gè)列上連接兩個(gè)數(shù)據(jù)框。只需在by中添加列,這些列稱之為“鍵”,比如by = c("x1" = "x2", "y1" = "y2")?,結(jié)果如下所示:
library(dplyr) set.seed(5) df1?<-?tibble(x1?=?letters[1:10],y1?=?LETTERS[11:20],a?=?rnorm(10) ) df2?<-?tibble(x2?=?letters[1:10],y2?=?LETTERS[11:20],b?=?rnorm(10) ) df<-df1%>%inner_join(df2,?df2,?by?=?c("x1"?=?"x2",?"y1"?=?"y2")) df#?A?tibble:?10?x?4x1????y1??????????a??????b<chr>?<chr>???<dbl>??<dbl>1?a?????K?????-0.841???1.23?2?b?????L??????1.38???-0.8023?c?????M?????-1.26???-1.08?4?d?????N??????0.0701?-0.1585?e?????O??????1.71???-1.07?6?f?????P?????-0.603??-0.1397?g?????Q?????-0.472??-0.5978?h?????R?????-0.635??-2.18?9?i?????S?????-0.286???0.241 10?j?????T??????0.138??-0.2592.2?使用for循環(huán)在R中存儲(chǔ)模型
假設(shè)我們想對(duì)鳶尾花數(shù)據(jù)集中的每個(gè)物種分別構(gòu)建不同的回歸模型,可以使用以下兩種不同的方法:
用一個(gè)列表存儲(chǔ)模型
使用assign按名字存儲(chǔ)模型
2.3?傳遞多個(gè)參數(shù)給sapply
假設(shè)我們想在R中運(yùn)行sapply或lapply,并且輸入?yún)?shù)有多個(gè)。此時(shí),可以定義一個(gè)形參,對(duì)形參應(yīng)用sapply,并將固定的值賦給其余參數(shù):
#?this?is?the?function?like?a?linear?equation #?of?the?form?y=?a?+?b?*?x my_func<-?function(a,b,c)?{a+b*c } #?the?values?of?the?x x?=?c(1,5,10) #?we?set?a=1?and?b=2 sapply(x,my_func,a=1,?b=2)[1]??3?11?212.4?獲得每一行的最大值對(duì)應(yīng)的列名
假設(shè)數(shù)據(jù)框如下:
set.seed(5) df<-as.data.frame(matrix(sample(1:100,12),ncol=3)) dfV1?V2?V3 1?66?41?19 2?57?85??3 3?79?94?38 4?75?71?58我們可以按行獲取每一行的最大值對(duì)應(yīng)的列名,如下所示:
colnames(df)[max.col(df,ties.method="random")][1]?"V1"?"V2"?"V2"?"V1"2.5?生成隨機(jī)日期
可以使用均勻分布從特定范圍的Unix時(shí)間戳生成隨機(jī)日期。例如,生成10個(gè)隨機(jī)日期:
library(lubridate)lubridate::as_datetime(?runif(10,?1546290000,?1577739600))[1]?"2019-12-09?15:45:26?UTC"?"2019-08-31?19:28:03?UTC"?"2019-01-13?12:15:13?UTC"?"2019-11-15?00:13:25?UTC" [5]?"2019-01-19?06:31:10?UTC"?"2019-11-02?12:46:34?UTC"?"2019-09-04?19:16:31?UTC"?"2019-07-29?11:53:43?UTC" [9]?"2019-01-25?23:08:20?UTC"?"2019-02-03?02:30:21?UTC"3 Python
3.1 按元素對(duì)元組進(jìn)行排序
假設(shè)有以下列表:
l?=?[(1,2),?(4,6),?(5,1),?(1,0)]我想按元組的第二個(gè)元素來(lái)排序:
sorted(l,?key=lambda?t:?t[1]) [(1,?0),?(5,?1),?(1,?2),?(4,?6)]3.2 扁平化一個(gè)由多個(gè)列表組成的列表
假設(shè)有一個(gè)列表:
l?=?[[1,?2,?3],?[4,?5,?6],?[7],?[8,?9]]我們希望將其扁平化為一個(gè)列表。這時(shí),可以利用for循環(huán)實(shí)現(xiàn),如下所示:
[item?for?sublist?in?l?for?item?in?sublist] [1,?2,?3,?4,?5,?6,?7,?8,?9]3.3 使用elif處理列表問(wèn)題
場(chǎng)景:對(duì)一個(gè)產(chǎn)品進(jìn)行打分,分?jǐn)?shù)等級(jí)為1~5,并將其分為三類,類別如下:
Good:評(píng)價(jià)大于等于4
Netural:評(píng)價(jià)等于3
Negative: ?評(píng)價(jià)小于3
3.4 一個(gè)shebang行:#!/usr/bin/python3
在許多.py文件中,腳本頂部可能出現(xiàn)shebang行。它的作用是設(shè)置解釋器的位置。通過(guò)在腳本頂部添加#!/usr/bin/python3,即可在Unix系統(tǒng)上運(yùn)行文件.py,并且系統(tǒng)會(huì)自動(dòng)將其識(shí)別為一個(gè)Python腳本。或者,也可以將腳本作為python3 file.py運(yùn)行。例如,假設(shè)文件.py是:
#!/usr/bin/python3 print("Hello?shebang?line")我們也可以在Unix上運(yùn)行:
$?./file.py推薦:?可以保存以下照片,在b站掃該二維碼,或者b站搜索【莊閃閃】觀看Rmarkdown系列的視頻教程。Rmarkdown視頻新增兩節(jié)視頻(寫(xiě)輪眼幻燈片制作)需要視頻內(nèi)的文檔,可在公眾號(hào)回復(fù)【rmarkdown】
往期精品(點(diǎn)擊圖片直達(dá)文字對(duì)應(yīng)教程)
機(jī)器學(xué)習(xí)
后臺(tái)回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集
總結(jié)
以上是生活随笔為你收集整理的翻译|给数据科学家的10个提示和技巧Vol.1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 被引10万次:21世纪高被引论文Top
- 下一篇: ComplexHeatmap |理解绘图