成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數據科學家在使用Python時常犯的九個錯誤

開發 前端
通過應用軟件工程最佳實踐,可以交付質量更好數據科學的項目。更好的質量可能是更少的錯誤、可靠的結果和更高的編碼效率。

最佳實踐都是從錯誤中總結出來的,所以這里我們總結了一些遇到的最常見的錯誤,并提供了如何最好地解決這些錯誤的方法、想法和資源。

1、不使用虛擬環境

這本身不是編碼問題,但我仍然認為每種類型的項目進行環境的隔離是一個非常好的實踐。

為什么要為每個項目使用專用環境呢?

第一個原因是Python本身包管理的問題,我們想盡量減少包和版本之間的沖突。

另外一個原因是我們代碼和依賴可以方便的部署到任意的位置

使用虛擬環境可以從Anaconda 或 Pipenv 開始。如果想更深入那么 Docker 是首選。

2、過度使用Jupyter Notebooks

Notebooks 非常適合用于教育目的和做一些快速而復雜的分析工作,但它不能作為一個好的 IDE。

一個好的 IDE 是應對數據科學任務時的真正武器,可以極大地提高您的工作效率。

Notebooks 很適合做實驗,而且可以輕松地將結果展示給其他人。但是它很容易出錯,當涉及到執行長期、協作和可部署的項目時,最好還是使用IDE,例如 VScode、Pycharm、Spyder 等。

3、使用絕對而不是相對路徑

絕對路徑的最大問題是無法進行方便部署,解決這個問題的主要方法是將工作目錄設置為項目根目錄,并且不要再項目中包含項目目錄外的文件,并且在代碼中的所有路徑均使用相對路徑。

import pandas as pd
import numpy as np
import os
#### 錯誤的方式 #####
excel_path1 = "C:\\Users\\abdelilah\\Desktop\\mysheet1.xlsx"
excel_path2 = "C:\\Users\\abdelilah\\Desktop\\mysheet2.xlsx"
mydf1 = pd.read_excel(excel_path1)
mydf2 = pd.read_excel(excel_path2)

#### 正確的方式 ####
DATA_DIR = "data"
#將要讀取的文件復制到data目錄
crime06_filename = "CrimeOneYearofData_2006.xlsx"
crime07_filename = "CrimeOneYearofData_2007.xlsx"
crime06_df = pd.read_excel(os.path.join(DATA_DIR, crime06_filename))
crime07_df = pd.read_excel(os.path.join(DATA_DIR, crime07_filename))

4、不處理警告

當我們的代碼能夠運行但產生奇怪的警告消息,我們很高興終于讓代碼運行并收到了有意義的輸出。但是我們需要處理這些警告嗎?

首先,警告本身并不是錯誤,但它們是會引起我們對潛在錯誤或問題的提示。當你的代碼中能夠運行成功但可能不是它的預期方式時,警告就會出現。

我遇到的最常見的警告是 Pandas 的“SettingwithCopyWarning”和“DeprecationWarning”。

SettingwithCopyWarning最大的原因是 Pandas 檢測到鏈式賦值(Chained Assignment)時發生的警告,我們應該避免對鏈式索引的結果賦值,因為這個操作有可能會報warning也有可能不會報。

DeprecationWarning 通常指出 Pandas 棄用了某些功能,并且您的代碼在使用更高版本時會中斷。

這里的建議并不是要處理所有的警告,但是一定要對所有警告產生的原因有所了解,要知道在特定項目中那些警告式可以忽略的,那些警告的出現對結果會有影響,應當避免。

5、沒有使用(很少使用)列表推導式

列表推導式是 python 的一個非常強大的特性。許多 for 循環可以用更易讀、更 Python 且速度更快的列表推導來代替。

可以在下面看到一個示例代碼,該代碼旨在讀取目錄中的 CSV 文件。可以看到,在使用列表推導時添很容易維護。

import pandas as pd
import os

DATA_PATH = "data"
filename_list = os.listdir(DATA_PATH)

#### 不好的方法 #####
csv_list = []
for fileaname in filename_list:
csv_list.append(pd.read_csv(os.path.join(DATA_PATH, filename)))

#### 建議 ####
csv_list = [pd.read_csv(os.path.join(DATA_PATH, filename)) for filename in filename_list]
list comprehensions
csv_list = [pd.read_csv(os.path.join(DATA_PATH,
filename)) for filename in filename_list if
filename.endswith(".csv")]

6、不使用類型注釋

類型注釋(或類型提示)是為變量分配類型的方法。在IDE進行智能感知的提示時可以為我們提供指示變量/參數的類型。這不僅可以提高我們開發的速度,也可以對我們閱讀代碼有很大的幫助

def mystery_combine(a, b, times):
return (a + b) * times

如果這么寫,我們根本不知道a,b和times的類型

def mystery_combine(a: str, b: str, times: int) -> str:
return (a + b) * times

但是加上了類型注釋,我們就知道a和b是字符串times是整數

需要說明的是:python在3.5版本的時候引入了類型注釋,python并不會在執行時檢查類型注釋,他只是為IDE提供了一個方便靜態類型檢查工具,對動態語言做靜態類型檢查,來避免一些潛在的錯誤。

7、pandas代碼不規范

方法鏈是 pandas 的一個很棒的特性,但是如果在一行中包含了很多的操作,代碼可能會變得不可讀。

有一個技巧可以讓這種方式邊的簡單,將表達式放入括號中,則可以對表達式的每個組件使用一行。

var_list = ["clicks", "time_spent"]
var_list_Q = [varname + "_Q" for varname in var_list]

#不可讀的方法
df_Q = df.groupby("id").rolling(window=3, min_periods=1, on="yearmonth[var_list].mean().reset_index().rename(columns=dict(zip(var_list, var_list_Q)))

#可讀性強的方法
df_Q = (
df
.groupby("id")
.rolling(window=3, min_periods=1, on="yearmonth")[var_list]
.mean()
.reset_index()
.rename(columns=dict(zip(var_list, var_list_Q))))

8、不遵守 PEP 約定

剛開始使用 Python 進行編程時,代碼可能是簡陋并且不可讀的,這是因為我們并沒有自己的設計規則來讓我的代碼看起來更好。如果我們自己來設計這種規則是費事費力的并且這種規則需要很多的實踐,好在Python官方有已經指定好的規則:PEP,它是 Python 的官方樣式指南。

雖然PEP的規則很多并且很繁瑣,我們可以忽略了一些 PEP 規則,但可以在 90% 的代碼中使用了它們。

9、你不使用編碼輔助工具

您想在編碼方面大幅提高生產力嗎?請開始使用編碼輔助工具,它通過巧妙的自動完成、打開文檔和提供改進代碼的建議來提供幫助。

pylance, Kite ,tabnine,copilot都是非常好的選擇。

責任編輯:華軒 來源: DeepHub IMBA
相關推薦

2019-04-09 09:00:01

數據科學代碼編寫

2017-08-04 15:53:10

大數據真偽數據科學家

2020-03-20 14:40:48

數據科學Python學習

2018-08-10 08:35:49

2012-12-06 15:36:55

CIO

2018-12-24 08:37:44

數據科學家數據模型

2012-12-26 10:51:20

數據科學家

2018-02-28 15:03:03

數據科學家數據分析職業

2016-03-10 13:56:42

數據科學數據科學家數據分析

2015-08-25 13:20:29

數據科學

2016-04-11 14:15:06

數據科學數據挖掘工具

2018-10-16 14:37:34

數據科學家數據分析數據科學

2012-06-12 09:33:59

2018-10-18 09:00:00

機器學習機器學習算法數據科學家

2015-07-23 10:49:06

Python工具數據科學

2018-03-01 15:34:20

數據科學面試招聘

2017-01-23 16:00:25

數據科學家大數據數學家

2018-12-06 13:08:30

數據科學家大數據數據科學

2019-12-04 15:02:22

數據科學家故事數據分析

2019-07-05 10:29:17

大數據數據科學家
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久1 | 一级国产精品一级国产精品片 | 亚洲精品www | 一区二区三区亚洲 | 99re热精品视频 | 国产精品一区在线 | 青青草免费在线视频 | 国产精品伦理一区二区三区 | 欧美a区 | 碰碰视频 | 91精品国产一区二区三区 | 国产伦精品一区二区三区在线 | 伊人在线 | 欧美一级免费看 | 午夜三级视频 | 免费看一级毛片 | 国产成人艳妇aa视频在线 | 亚洲黄色在线免费观看 | 国产色婷婷久久99精品91 | 欧美日韩在线一区二区 | 国家aaa的一级看片 h片在线看 | www.成人久久 | 久久精品网 | 国产精品69av | 国产精品久久久久久久久久久久久 | 毛片区 | 久久福利网站 | 性生活毛片 | 亚洲国产欧美在线人成 | 精品一区二区三区免费视频 | 成人av播放 | 91福利电影在线观看 | 亚洲欧美国产精品一区二区 | 狠狠综合久久av一区二区小说 | 久久毛片 | 日韩成人在线播放 | 亚洲免费精品一区 | 久国产精品 | 韩国主播午夜大尺度福利 | 九九av | 亚洲成人动漫在线观看 |