偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

90% 的 Python 開發(fā)人員在濫用 Jupyter Notebook?

開發(fā) 前端
在處理現(xiàn)實世界的數(shù)據(jù)(例如寵物領(lǐng)養(yǎng))時,每個決策都至關(guān)重要。這些習慣正是一次性分析與可靠、可審查項目的區(qū)別所在。

作為一名數(shù)據(jù)科學家和 Python 開發(fā)者,Jupyter Notebook 多年來一直是我每天的創(chuàng)作畫布。但直到交付了多個雜亂的項目、排查了各種模糊的 bug,并重新翻看了六個月前的舊Notebook后,我才意識到該如何避免使用它們。

這篇文章并非討論重啟內(nèi)核或使用%matplotlib inline之類的基本技巧。這些技巧是我多年來一直忽略的細節(jié),并使你的筆記本更簡潔、更快速、更專業(yè)。

為了更實際地實現(xiàn)這一點,我們將使用一個虛構(gòu)的美國寵物收養(yǎng)趨勢數(shù)據(jù)集。我們深入研究一下。

1. 使用配置單元來配置項目級常量

太多筆記本會將參數(shù)埋藏在隨機單元格中。在筆記本頂部使用專用的配置單元格,可以避免全局混亂。

# 配置
DATA_DIR = "data/"
RAW_FILE = DATA_DIR + "pet_adoptions.csv"
FIG_DIR = "figures/"
RANDOM_SEED = 42
TOP_BREEDS = 10

好處:

  • 可重復性:你不必滾動來查找參數(shù)的定義位置。
  • 易于修改:在一個地方更改路徑、種子或參數(shù)。
  • 鼓勵模塊化設(shè)計。

對于大型項目,請使用Config類甚至.yaml/.env文件。

2. 提交到 Git 之前務必清除輸出

臟筆記本 = 版本控制不佳。請使用 Jupyter 的內(nèi)置選項或類似nbstripout的 CLI 工具。

使用 CLI:

pip install nbstripout
nbstripout install

或者使用 VSCode 或 JupyterLab 選項:

  • File → Save and Clear All Outputs

好處:

  • Git 中更清晰的差異。
  • 避免臃腫的倉庫。
  • 防止敏感數(shù)據(jù)/輸出的意外泄露。

3. 使用輔助函數(shù)構(gòu)造代碼

避免重復。即使在筆記本中,也可以將邏輯抽象為函數(shù)。這可以提高清晰度和可重用性。

import pandas as pd

def load_pet_data(filepath: str) -> pd.DataFrame:
    df = pd.read_csv(filepath, parse_dates=["adoption_date"])
    df.dropna(subset=["breed", "age", "adoption_date"], inplace=True)
    return df

# 加載數(shù)據(jù)
df = load_pet_data(RAW_FILE) 
df.head()

你可以進一步創(chuàng)建utils.py共享代碼文件:

project/
│
├── notebook.ipynb
├── utils.py

然后導入:

from utils import load_pet_data

4. 有效使用 Markdown

(包括待辦事項單元!)

我以前會忽略 Markdown,或者寫一些模糊的單元格注釋?,F(xiàn)在,我把 Markdown 當作項目文檔。

以下是我對此的解釋:

## 數(shù)據(jù)清理計劃

- [x] 刪除空值
- [x] 解析日期
- [ ] 處理年齡異常值

好處:

  • 未來——你會感謝你自己。
  • 合作者了解你的意圖。
  • 使筆記本更加美觀且易讀。

5.明確驗證數(shù)據(jù)

永遠不要假設(shè)數(shù)據(jù)是干凈的。要盡早并經(jīng)常驗證。

# 驗證:檢查重復條目
duplicates = df.duplicated().sum()
print(f"Found {duplicates} duplicate rows.") 

# 可視化驗證
import matplotlib.pyplot as plt
import seaborn as sns

def plot_adoption_trends(df: pd.DataFrame):
    monthly = df.resample('M', on='adoption_date').size()
    sns.lineplot(x=monthly.index, y=monthly.values)
    plt.title("Monthly Pet Adoptions")
    plt.xlabel("Month")
    plt.ylabel("Number of Adoptions")
    plt.tight_layout()
    plt.show()

plot_adoption_trends(df)

還可以通過assert語句進行驗證:

assert df['age'].min() >= 0, "發(fā)現(xiàn)寵物年齡為負數(shù)!"

示例項目——寵物收養(yǎng)趨勢

以下是這些做法在快速寵物收養(yǎng)趨勢分析中的體現(xiàn)。

1. 加載并檢查數(shù)據(jù)

df = load_pet_data(RAW_FILE)
df.info()

2. 數(shù)據(jù)清洗

# 提取月份和星期
df["month"] = df["adoption_date"].dt.month
df["weekday"] = df["adoption_date"].dt.weekday

3. 分析頂級品種

top_breeds = df["breed"].value_counts().head(TOP_BREEDS)
top_breeds.plot(kind= 'barh' , title= "十大最受歡迎的品種" , figsize=(8, 5)) 
plt.gca().invert_yaxis() 
plt.show()

4.季節(jié)性趨勢

sns.boxplot(x="month", y="age", data=df) 
plt.title("按月份劃分的被收養(yǎng)寵物的年齡") 
plt.xlabel("月份") 
plt.ylabel("年齡(歲)") 
plt.show()

寫在最后

Jupyter Notebook 功能強大,但也容易被誤用。我們介紹的 5 個實踐看似簡單,但它們能讓你 Jupyter Notebook 更易于維護、更易于共享,并且更適合生產(chǎn)環(huán)境:

  • 使用配置單元
  • 在 Git 之前清除輸出
  • 將邏輯抽象為函數(shù)
  • 有效地使用Markdown進行文檔和規(guī)劃
  • 嚴格驗證你的數(shù)據(jù)和視覺效果

在處理現(xiàn)實世界的數(shù)據(jù)(例如寵物領(lǐng)養(yǎng))時,每個決策都至關(guān)重要。這些習慣正是一次性分析與可靠、可審查項目的區(qū)別所在。

責任編輯:武曉燕 來源: 數(shù)據(jù)STUDIO
相關(guān)推薦

2022-12-29 08:27:03

Java開發(fā)人員編碼

2010-02-24 13:45:40

Python開發(fā)人員

2012-05-30 15:15:42

ibmdw

2023-03-15 07:12:53

企業(yè)開發(fā)人員提供商

2010-08-09 16:09:25

2009-12-11 14:50:14

Visual Basi

2009-11-23 20:07:51

ibmdw開發(fā)

2021-02-19 09:33:01

kubernetesJAVA服務

2022-04-13 18:12:37

TypeScriptPython開發(fā)

2010-02-02 16:07:17

Python開發(fā)人員

2012-12-14 08:55:45

開發(fā)人員產(chǎn)品經(jīng)理

2010-08-16 09:21:35

Windows Pho

2021-12-10 23:48:19

Java開發(fā)技術(shù)

2009-07-20 16:11:41

JRuby Swing

2023-02-17 15:01:15

2015-06-04 14:41:37

WebPython框架

2023-08-14 15:23:37

2009-05-31 08:31:07

GoogleWaveTechCrunch

2013-04-15 10:00:09

程序員

2011-09-05 14:21:29

webOS
點贊
收藏

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