Hub 文件
編輯數據集
並獲得增強的文件體驗
開始使用
編輯數據集
Hub 支援社群與研究數據集的協作策展。我們鼓勵您探索 Hub 上現有的數據集,並為改善它們做出貢獻,以協助壯大機器學習社群並加速所有人的進步。歡迎任何形式的貢獻!
如果您還沒有帳號,請先建立一個 Hugging Face Hub 帳號。
使用 Hub UI 進行編輯
此功能目前僅支援 CSV、TSV 和 Parquet 格式的數據集。
Hub 的網頁介面允許不具備任何技術背景的用戶編輯數據集。
開啟數據集頁面並導航至 Data Studio 標籤頁即可開始編輯。

點擊 Toggle edit mode (切換編輯模式) 以啟用數據集編輯。


您可以根據需要編輯任意數量的儲存格,最後點擊 Commit (提交) 以送出變更並留下提交訊息。


使用 huggingface_hub 客戶端函式庫
huggingface_hub 函式庫可以管理 Hub 儲存庫,包括編輯數據集。
例如,以下是如何使用 Hugging Face FileSystem API 編輯 CSV 檔案的方法:
from huggingface_hub import hffs
path = f"datasets/{repo_id}/data.csv"
with hffs.open(path, "r") as f:
content = f.read()
edited_content = content.replace("foo", "bar")
with hffs.open(path, "w") as f:
f.write(edited_content)您也可以在本地硬碟上進行編輯並提交變更。
from huggingface_hub import hf_hub_download, upload_file
local_path = hf_hub_download(repo_id=repo_id, path_in_repo= "data.csv", repo_type="dataset")
with open(path, "r") as f:
content = f.read()
edited_content = content.replace("foo", "bar")
with open(path, "w") as f:
f.write(edited_content)
upload_file(repo_id=repo_id, path_in_repo=local_path, repo_type="dataset")若要將整個數據集儲存庫保留在本地並一次編輯多個檔案,請使用
snapshot_download和upload_folder,而不是hf_hub_download和upload_file。
請造訪 客戶端函式庫文件 以了解更多資訊。
整合的函式庫
如果 Hub 上的數據集與 受支援的函式庫 相容,只需幾行程式碼即可載入、編輯並推送該數據集。
以下是如何使用 Pandas 編輯 CSV 檔案的方法:
import pandas as pd
# Load the dataset
df = pd.read_csv(f"hf://datasets/{repo_id}/data.csv")
# Edit
df = df.apply(...)
# Commit the changes
df.to_csv(f"hf://datasets/{repo_id}/data.csv")像 Polars 和 DuckDB 這類函式庫也實作了 hf:// 協定,用於讀取、編輯和寫入 Hugging Face 上的檔案。此外,其他函式庫(如 Spark、Dask 或 🤗 Datasets)對於編輯包含多個檔案的數據集也很有用。請在此處查看 受支援函式庫的完整列表。
關於如何在網站上存取數據集的資訊,您可以點擊數據集頁面上的「Use this dataset」按鈕來查看操作方法。例如,samsum 下方展示了如何使用 🤗 Datasets 進行操作。


僅上傳新資料
Hugging Face 的儲存系統由 Xet 提供技術支援,該系統使用區塊去重 (chunk deduplication) 來提高上傳效率。與傳統雲端儲存不同,Xet 不需要為了提交變更而重新上傳整個數據集。相反,它會自動偵測數據集中哪些部分發生了變化,並指示客戶端函式庫僅上傳已更新的部分。為了做到這一點,Xet 使用了一種智慧演算法來尋找 Hugging Face 上已存在的 64kB 數據區塊。
讓我們看看之前使用 Pandas 的範例:
import pandas as pd
# Load the dataset
df = pd.read_csv(f"hf://datasets/{repo_id}/data.csv")
# Edit part of the dataset
df = df.apply(...)
# Commit the changes
df.to_csv(f"hf://datasets/{repo_id}/data.csv")這段程式碼首先載入數據集然後進行編輯。一旦編輯完成,to_csv() 會將檔案實體化到記憶體中,進行分塊處理,詢問 Xet 哪些區塊已存在於 Hugging Face,哪些區塊發生了變化,然後僅上傳新的資料。
最佳化 Parquet 編輯
需要上傳的資料量取決於編輯內容和檔案結構。
Parquet 格式是列式儲存並在頁面層級 (page level) 進行壓縮 (每個頁面約 ~1MB)。我們透過 Parquet Content Defined Chunking (內容定義分塊) 為 Xet 最佳化了 Parquet,這確保了未變更的資料通常會產生未變更的頁面。
例如,此程式碼會上傳 df 的內容,而對於 edited_df,由於它僅上傳發生變化的區塊,因此上傳速度更快。
import pandas as pd
df.to_parquet(
"hf://datasets/username/my_dataset/imdb.parquet",
# Optimize for Xet
use_content_defined_chunking=True,
write_page_index=True,
)
edited_df = ... # e.g. with added/modified/removed rows or columns
edited_df.to_parquet(
"hf://datasets/username/my_dataset/imdb.parquet",
# Optimize for Xet
use_content_defined_chunking=True,
write_page_index=True,
)資料塊約為 64kB,且 Parquet 逐欄儲存資料,因此在編輯優化後的 Parquet 檔案時,實際發生的情況如下:
- 新增一欄 -> 僅上傳該新欄的資料塊。
- 新增/編輯/刪除一列 -> 每一欄會各上傳一個資料塊。
此外,包含元資料 (metadata) 的 Parquet 頁尾資料塊也會被上傳。
請在 受支援的函式庫 頁面中查看您的函式庫是否支援最佳化 Parquet。
串流 (Streaming)
對於大型數據集,建議使用具備數據串流功能的函式庫來進行端到端的串流處理。在這種情況下,數據集處理會隨著舊資料的到達與新資料上傳至 Hub 的過程中逐步進行。
請在 受支援的函式庫 頁面中查看您的函式庫是否支援串流處理。
在 GitHub 上更新