国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

十個(gè)編碼過程中的“坑”,一篇文章幫你填平了!

開發(fā) 前端 開發(fā)工具
數(shù)據(jù)科學(xué)家是“比任何軟件工程師都更擅長統(tǒng)計(jì)學(xué)、又比任何統(tǒng)計(jì)學(xué)家都更擅長軟件工程”的人。許多數(shù)據(jù)科學(xué)家都有統(tǒng)計(jì)學(xué)背景,但在軟件工程方面經(jīng)驗(yàn)很少。本文列出了常見的10個(gè)編碼錯(cuò)誤,希望你能認(rèn)真閱讀并避免它們。

數(shù)據(jù)科學(xué)家是“比任何軟件工程師都更擅長統(tǒng)計(jì)學(xué)、又比任何統(tǒng)計(jì)學(xué)家都更擅長軟件工程”的人。許多數(shù)據(jù)科學(xué)家都有統(tǒng)計(jì)學(xué)背景,但在軟件工程方面經(jīng)驗(yàn)很少。本文列出了常見的10個(gè)編碼錯(cuò)誤,希望你能認(rèn)真閱讀并避免它們。

1. 沒有共享代碼中引用的數(shù)據(jù)

數(shù)據(jù)科學(xué)既需要代碼也需要數(shù)據(jù)。因此,其他人要能夠獲取數(shù)據(jù)才能重現(xiàn)結(jié)果。這聽起來是很基本的要求,但很多人都忘記和代碼一起共享數(shù)據(jù)。

  1. import pandas as pd 
  2. df1 =pd.read_csv('file-i-dont-have.csv') # fails 
  3. do_stuff(df) 

解決方案:

使用d6tpipe(https://github.com/d6t/d6tpipe)共享數(shù)據(jù)文件和代碼,或?qū)⒍呱蟼鞯絊3 / web /google drive等或保存到數(shù)據(jù)庫,以便收件人可以檢索文件(但不要將它們添加到git,見下文)。

2. 硬編碼無法訪問的路徑

與***個(gè)錯(cuò)誤類似,如果你對(duì)其他人無權(quán)訪問的路徑進(jìn)行硬編碼,他們就無法運(yùn)行代碼并且必須查看許多地方以手動(dòng)更改路徑。

  1. import pandas as pd 
  2. df = pd.read_csv('/path/i-dont/have/data.csv')# fails 
  3. do_stuff(df) 
  4. # or 
  5. import os 
  6. os.chdir('c:\\Users\\yourname\\desktop\\python')# fails 

解決方案:使用相對(duì)路徑,全局路徑配置變量,或使用d6tpipe 讓你的數(shù)據(jù)易于訪問。

3. 混淆數(shù)據(jù)與代碼

很多人會(huì)這么想:由于數(shù)據(jù)科學(xué)代碼需要數(shù)據(jù),為什么不將它轉(zhuǎn)儲(chǔ)到同一目錄中?當(dāng)你這么做的時(shí)候,很有可能也會(huì)把圖像,報(bào)告和其他垃圾保存到一個(gè)目錄下。這樣就一團(tuán)亂麻了。

  1. ├── data.csv 
  2. ├── ingest.py 
  3. ├── other-data.csv 
  4. ├── output.png 
  5. ├── report.html 
  6.   
  7. └── run.py 

解決方案:將文件夾歸類,如數(shù)據(jù)、報(bào)告、代碼等。請(qǐng)參閱#5,并使用#1中提到的工具來存儲(chǔ)和共享數(shù)據(jù)。

4. 和源代碼一起用Gitcommit命令處理數(shù)據(jù)

大多數(shù)人會(huì)在版本控制他們的代碼(如果你不這樣做,那這也是你犯的錯(cuò)誤之一!)。在嘗試共享數(shù)據(jù)時(shí),你可能很想把數(shù)據(jù)文件添加到版本控制中。這對(duì)于非常小的文件是可以的;但是git無法針對(duì)數(shù)據(jù)進(jìn)行優(yōu)化,尤其是對(duì)大文件來說。

  1. git add data.csv 

解決方案:使用#1中提到的工具來存儲(chǔ)和共享數(shù)據(jù)。如果你真的想版本控制數(shù)據(jù),請(qǐng)參閱d6tpipe, DVC(https://dvc.org/) 和Git Large File Storage(https://git-lfs.github.com/)。

5. 編寫函數(shù)而不是使用DAGs

說了這么多數(shù)據(jù),讓我們談?wù)剬?shí)際的代碼。

學(xué)習(xí)編碼時(shí)學(xué)到的***件事就是函數(shù),因此數(shù)據(jù)科學(xué)代碼主要被處理為一系列線性運(yùn)行的函數(shù)。這會(huì)導(dǎo)致一些問題。

  1. defprocess_data(data, parameter): 
  2.     data = do_stuff(data) 
  3.     data.to_pickle('data.pkl') 
  4.   
  5. data =pd.read_csv('data.csv') 
  6. process_data(data) 
  7. df_train =pd.read_pickle(df_train) 
  8. model = sklearn.svm.SVC() 
  9. model.fit(df_train.iloc[:,:-1],df_train['y']) 

解決方案:數(shù)據(jù)科學(xué)代碼***寫為一組相互之間具有依賴性的任務(wù),而不是寫為線性鏈?zhǔn)胶瘮?shù)。

使用 d6tflow(https://github.com/d6t/d6tflow) 或airflow(https://airflow.apache.org/)。

6. 寫for循環(huán)

與函數(shù)一樣,for循環(huán)是學(xué)習(xí)編碼時(shí)首先學(xué)到的。For循環(huán)容易理解,但它們很慢而且過于冗長。這通常表明了你沒意識(shí)到還有矢量化替代方案。

  1. x = range(10) 
  2. avg =sum(x)/len(x); std = math.sqrt(sum((i-avg)**2 for i in x)/len(x)); 
  3. zscore =[(i-avg)/std for x] 
  4. # should be:scipy.stats.zscore(x) 
  5.   
  6. # or 
  7. groupavg = [] 
  8. for i indf['g'].unique(): 
  9.         dfdfg = df[df[g']==i] 
  10.         groupavg.append(dfg['g'].mean()) 
  11. # should be:df.groupby('g').mean() 

解決方案:

Numpy(http://www.numpy.org/), scipy(https://www.scipy.org/)和pandas(https://pandas.pydata.org/)為大多數(shù)你認(rèn)為可能需要循環(huán)的情況提供了矢量化函數(shù)。

7. 不寫單元測試

隨著數(shù)據(jù),參數(shù)或用戶輸入的變化,代碼可能會(huì)中斷,有時(shí)你甚至注意不到。這可能導(dǎo)致輸出錯(cuò)誤,如果有人根據(jù)輸出做決策,那么糟糕的數(shù)據(jù)將導(dǎo)致錯(cuò)誤的決策!

解決方案:使用assert語句檢查數(shù)據(jù)質(zhì)量。pandas有同等性測試,d6tstack

(https://github.com/d6t/d6tstack) 檢查數(shù)據(jù)攝取,d6tjoin

(https://github.com/d6t/d6tjoin/blob/master/examples-prejoin.ipynb)檢查數(shù)據(jù)連接。以下是數(shù)據(jù)檢查示例的代碼:

  1. assertdf['id'].unique().shape[0] == len(ids) # have data for all ids? 
  2. assertdf.isna().sum()<0.9 # catch missing values 
  3. assertdf.groupby(['g','date']).size().max() ==1 # no duplicate values/date? 
  4. assertd6tjoin.utils.PreJoin([df1,df2],['id','date']).is_all_matched() # all idsmatched? 

8. 不記錄代碼

為了急著做分析,你可能囫圇吞棗地弄出結(jié)果,然后把結(jié)果交給客戶或老板;一個(gè)星期后,他們找到你說“能改一下這里嗎”或“能更新一下這個(gè)嗎”。這時(shí)你看看代碼,完全不記得當(dāng)初為什么這么寫了。現(xiàn)在想象一下,其他人還必須運(yùn)行你的代碼……

  1. defsome_complicated_function(data): 
  2.         datadata = data[data['column']!='wrong'] 
  3.         datadata = data.groupby('date').apply(lambdax: complicated_stuff(x)) 
  4.         datadata = data[data['value']<0.9
  5.         return data 

解決方案:在提供分析之后,也要花費(fèi)額外的時(shí)間來記錄編碼時(shí)做了什么。你會(huì)慶幸自己這么做了的,其他人更會(huì)感謝你!這樣你會(huì)看起來更專業(yè)。

9. 將數(shù)據(jù)保存為csv或pickle格式

回到數(shù)據(jù),畢竟我們?cè)谡剶?shù)據(jù)科學(xué)。就像函數(shù)和for循環(huán)一樣,CSV和pickle文件很常用,但它們實(shí)際上并不是很好。CSV不包含架構(gòu),因此每個(gè)人都必須再次解析數(shù)字和日期。Pickles解決了這個(gè)問題但只能在python中使用并且不會(huì)被壓縮。兩者都不是存儲(chǔ)大型數(shù)據(jù)集的好格式。

  1. defprocess_data(data, parameter): 
  2.     data = do_stuff(data) 
  3.     data.to_pickle('data.pkl') 
  4.   
  5. data =pd.read_csv('data.csv') 
  6. process_data(data) 
  7. df_train = pd.read_pickle(df_train) 

解決方案:

對(duì)數(shù)據(jù)模式使用 parquet(https://github.com/dask/fastparquet)或其他二進(jìn)制數(shù)據(jù)格式,這兩者是壓縮數(shù)據(jù)的理想格式。d6tflow自動(dòng)將任務(wù)的數(shù)據(jù)輸出保存為parquet,這樣就不用再操心格式問題了。

10. 使用jupyternotebooks筆記本

這一點(diǎn)也許頗具爭議:jupyternotebooks和CSV一樣普遍。很多人都使用它們。但這并不意味它們就是很好的工具。jupyternotebooks助長了上面提到的軟件工程中的壞習(xí)慣,特別是:

  • 你很想將所有文件轉(zhuǎn)儲(chǔ)到一個(gè)目錄中
  • 編寫自上而下運(yùn)行的代碼,而不是DAGs
  • 沒有將代碼模塊化
  • 難以糾錯(cuò)
  • 代碼和輸出混在一個(gè)文件中
  • 沒有很好地進(jìn)行版本控制
  • 上手很容易,但擴(kuò)展很難。

解決方案:

使用pycharm (https://www.jetbrains.com/pycharm/)和/或spyder(https://www.spyder-ide.org/)。

責(zé)任編輯:趙寧寧 來源: 讀芯術(shù)
相關(guān)推薦

2020-02-18 09:49:33

物聯(lián)網(wǎng)IOT物聯(lián)網(wǎng)技術(shù)

2020-10-09 08:15:11

JsBridge

2019-07-23 08:55:46

Base64編碼底層

2021-05-18 09:00:28

Pythonclass

2021-08-12 14:19:14

Slice數(shù)組類型內(nèi)存

2022-02-21 09:44:45

Git開源分布式

2021-04-09 08:40:51

網(wǎng)絡(luò)保險(xiǎn)網(wǎng)絡(luò)安全網(wǎng)絡(luò)風(fēng)險(xiǎn)

2019-04-17 15:16:00

Sparkshuffle算法

2024-06-25 08:18:55

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平臺(tái)

2017-09-05 08:52:37

Git程序員命令

2020-10-23 07:56:04

Java中的IO流

2022-01-15 10:02:03

Java Hashtable類 Java 基礎(chǔ)

2021-11-10 09:19:41

PythonShutil模塊

2013-05-14 15:43:53

綜合布線布線技術(shù)通信網(wǎng)絡(luò)

2011-07-12 13:35:04

程序員

2021-11-17 10:11:08

PythonLogging模塊

2021-05-15 09:18:04

Python進(jìn)程

2021-07-01 10:01:16

JavaLinkedList集合
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产色产综合产在线视频| 欧美在线观看成人| 中文亚洲免费| 天堂av免费看| 国产精品麻豆欧美日韩ww| 日韩私人影院| 欧美一区二区三区思思人| 久久av影院| 国产日韩一区在线| 另类欧美日韩国产在线| 亚洲一区二区三区四区五区xx| 亚洲一区二区三区不卡国产欧美| 精品自拍一区| 九九九久久国产免费| 欧美精品一卡| 欧美成人三级在线视频| 精品福利一区二区| 免费污视频在线一区| 国产一区二中文字幕在线看| 韩国v欧美v日本v亚洲v| 午夜激情影院| 伊人久久五月天| 欧美亚洲不卡| 一区二区三区国产免费| 欧美日韩一区小说| 亚洲国产中文在线| 日韩av电影免费观看| 一区二区三区日韩欧美| 欧美电影免费观看| 97人人干人人| 国产欧美综合在线| 久久电影网站| 国产欧美一区二区三区视频| 国产麻豆成人传媒免费观看| 影音先锋另类| 另类色图亚洲色图| 久久激情综合| 诱人的瑜伽老师3hd中字| 亚洲性视频网站| 在线日本高清免费不卡| 艹b视频在线观看| 日韩欧美国产一区二区在线播放 | 乡村艳史在线观看| 99国产超薄丝袜足j在线观看| 久久久蜜臀国产一区二区| 午夜视频在线观看网站| 欧美做受高潮电影o| 成人午夜在线播放| 毛片在线网址| 国产精品久久一区二区三区| 日本成人网址| 久久偷看各类女兵18女厕嘘嘘| 99精品热6080yy久久| 很黄很污的网站| 中文字幕九色91在线| 麻豆精品网站| 精品乱码一区二区三四区视频 | 亚洲va男人天堂| 国产午夜亚洲精品不卡| 成人超碰在线| 国产精品白丝jk白祙| 亚洲欧美另类综合偷拍| 日韩午夜视频在线| 激情视频小说图片| 亚洲精品在线观看网站| 国产精品videossex久久发布| 开心丁香婷婷深爱五月| 欧美成人免费全部观看天天性色| 国产精品一二一区| 最新欧美色图| 日韩在线三级| 日韩免费成人网| 精品1区2区3区4区| 麻豆国产在线播放| 国产99在线播放| 91国产视频在线观看| 天天射天天综合网| 日韩亚洲视频在线观看| 成人性生交大片免费看视频直播| 亚洲综合久久久久| 日韩国产一区二区| 毛片在线网址播放| 国产精品网红福利| 精品国产乱码久久久久久天美 | 九色自拍视频在线观看| 亚洲区免费影片| 国内精品久久久久影院一蜜桃| www555久久| 国产盗摄视频在线观看| 亚洲欧美日韩精品久久| 韩国精品久久久| 国产精品亲子伦av一区二区三区 | 欧美极品色图| 日韩视频不卡中文| 男人的j进女人的j一区| 91超碰在线免费| 裸体裸乳免费看| 在线成人免费网站| 国产亚洲一区二区三区四区| y111111国产精品久久久| 91极品尤物在线播放国产| 欧美性受xxx| 午夜视频在线观看一区| 国产精品成人a在线观看| 国产中文字幕在线看| 超碰97国产在线| 日韩欧美一区二区三区在线| 精品一区二区三区日韩| 色成人综合网| av三级影院| 91精品在线国产| 欧美一级欧美三级在线观看| 久久9热精品视频| jizz亚洲女人高潮大叫| 成人性生生活性生交12| 国产精品免费在线免费| 欧美日韩高清一区二区不卡| 久久精品国产精品青草| 欧美美女福利视频| 91大神网址| 精品国产综合久久| 亚洲男人天堂2023| 国产精品天干天干在线综合| 不卡av一区二区| 成人免费高清| 国产中文字幕视频在线观看| 国产精品69av| 欧美一级高清片在线观看| aa级大片欧美| 精品视频免费| av毛片在线播放| 成人亚洲视频在线观看| 96国产粉嫩美女| 一本色道久久综合亚洲精品小说| 国产精品福利一区二区三区| 亚洲美女黄色| 国产精品2区| 岛国最新视频免费在线观看| a级片一区二区| 国产精品久久久久久久久久尿| 日韩一级二级三级| 中文字幕第一区| 久久精品1区| 日韩欧美ww| 国产乱码在线| 国产91福利| 亚洲一二三区在线| 国产成人亚洲综合青青| 亚洲国产成人爱av在线播放| 中文字幕免费一区| 老牛影视一区二区三区| 欧美三级电影在线| 哥也色在线视频| 182午夜在线观看| 日本一区二区在线| 日韩av免费网站| 亚洲人av在线影院| 色香色香欲天天天影视综合网 | 三级免费网站| 日本精品一区二区| 69久久夜色精品国产69乱青草| 欧美一区二区三区人| 国产精品久久久久久一区二区三区| 日韩一级在线| 色天天色综合| 色尼玛亚洲综合影院| 你懂的视频在线| 能在线观看的av网站| 日本在线成人一区二区| 国产精品高潮呻吟久久av野狼| 亚洲偷熟乱区亚洲香蕉av| 91福利在线看| 亚洲日韩欧美一区二区在线| 美腿丝袜在线亚洲一区| 欧美系列电影免费观看| 亚洲精品成a人ⅴ香蕉片| a天堂中文在线官网在线| 久久白虎精品| 欧美v在线观看| 亚洲制服中文| 国产欧美综合精品一区二区| 欧美制服第一页| 久久久av网站| 亚洲国产三级网| 欧美视频在线播放| 亚洲综合免费观看高清完整版| 91色在线porny| 国模一区二区三区白浆| 亚洲日本免费| 我不卡伦不卡影院| 精品国产一区一区二区三亚瑟| 精品网站999| 亚洲高清黄色| 欧美家庭影院| 在线激情网站| 巨骚激情综合| 青青草手机在线| 一级视频在线观看| 中文字幕第5页| 成年人福利视频|