翻译|给数据科学家的10个提示和技巧Vol.1
原文:10 Tips And Tricks For Data Scientists Vol.1
譯者:趙西西
原博客簡介:Predictive Hacks是與數據科學相關的在線資源中心。該博客是由一群數據科學家運營,專注于講解在各種領域如何運用大數據技術(從機器學習和人工智能到業務領域)。
1 引言
這一系列對數據科學世界中常見的任務提供了一些代碼作為參考。本文主要涵蓋 Python、R、Unix、Excel、Git和Docker等語言的提示(Tips)。這一期主要展示在不同應用場景下的10個提示。
2??R
2.1 利用dplyr包實現多個列上連接數據框
dplyr包允許我們在多個列上連接兩個數據框。只需在by中添加列,這些列稱之為“鍵”,比如by = c("x1" = "x2", "y1" = "y2")?,結果如下所示:
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循環在R中存儲模型
假設我們想對鳶尾花數據集中的每個物種分別構建不同的回歸模型,可以使用以下兩種不同的方法:
用一個列表存儲模型
使用assign按名字存儲模型
2.3?傳遞多個參數給sapply
假設我們想在R中運行sapply或lapply,并且輸入參數有多個。此時,可以定義一個形參,對形參應用sapply,并將固定的值賦給其余參數:
#?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?獲得每一行的最大值對應的列名
假設數據框如下:
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我們可以按行獲取每一行的最大值對應的列名,如下所示:
colnames(df)[max.col(df,ties.method="random")][1]?"V1"?"V2"?"V2"?"V1"2.5?生成隨機日期
可以使用均勻分布從特定范圍的Unix時間戳生成隨機日期。例如,生成10個隨機日期:
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 按元素對元組進行排序
假設有以下列表:
l?=?[(1,2),?(4,6),?(5,1),?(1,0)]我想按元組的第二個元素來排序:
sorted(l,?key=lambda?t:?t[1]) [(1,?0),?(5,?1),?(1,?2),?(4,?6)]3.2 扁平化一個由多個列表組成的列表
假設有一個列表:
l?=?[[1,?2,?3],?[4,?5,?6],?[7],?[8,?9]]我們希望將其扁平化為一個列表。這時,可以利用for循環實現,如下所示:
[item?for?sublist?in?l?for?item?in?sublist] [1,?2,?3,?4,?5,?6,?7,?8,?9]3.3 使用elif處理列表問題
場景:對一個產品進行打分,分數等級為1~5,并將其分為三類,類別如下:
Good:評價大于等于4
Netural:評價等于3
Negative: ?評價小于3
3.4 一個shebang行:#!/usr/bin/python3
在許多.py文件中,腳本頂部可能出現shebang行。它的作用是設置解釋器的位置。通過在腳本頂部添加#!/usr/bin/python3,即可在Unix系統上運行文件.py,并且系統會自動將其識別為一個Python腳本。或者,也可以將腳本作為python3 file.py運行。例如,假設文件.py是:
#!/usr/bin/python3 print("Hello?shebang?line")我們也可以在Unix上運行:
$?./file.py推薦:?可以保存以下照片,在b站掃該二維碼,或者b站搜索【莊閃閃】觀看Rmarkdown系列的視頻教程。Rmarkdown視頻新增兩節視頻(寫輪眼幻燈片制作)需要視頻內的文檔,可在公眾號回復【rmarkdown】
往期精品(點擊圖片直達文字對應教程)
機器學習
后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
總結
以上是生活随笔為你收集整理的翻译|给数据科学家的10个提示和技巧Vol.1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 被引10万次:21世纪高被引论文Top
- 下一篇: ComplexHeatmap |理解绘图