# 如何在 Python 中加載機器學習數據
> 原文: [https://pythonbasics.org/how-to-load-machine-learning-data-in-python/](https://pythonbasics.org/how-to-load-machine-learning-data-in-python/)
為了使用 Python 啟動您的機器學習項目,您需要能夠正確加載數據。 如果您是 Python 的初學者,本文將幫助您學習如何使用三種不同的技術來加載機器學習數據。
## 加載機器學習數據
在深入探討之前,您需要知道 CSV 或逗號分隔的值是呈現機器學習數據的最常用格式。 在機器學習數據的 CSV 文件中,您需要了解一些零件和功能。 這些包括:
* **CSV 文件標題**:CSV 文件中的標題用于將名稱或標簽自動分配給數據集的每一列。 如果您的文件沒有標題,則必須手動命名屬性。
* **注釋**:當一行以井號(`#`)開頭時,您可以在 CSV 文件中標識注釋。 根據您選擇的加載機器學習數據的方法,您將不得不確定是否要顯示這些注釋,以及如何識別它們。
* **定界符**:定界符分隔字段中的多個值,并用逗號(`,`)表示。 制表符(`\t`)是可以使用的另一個定界符,但是必須明確指定它。
* **引號**:如果文件中的字段值包含空格,則通常會用引號引起來,并且表示該值的符號為雙引號。 如果選擇使用字符,則需要在文件中指定。
在確定了數據文件的這些關鍵部分之后,讓我們繼續學習如何在 Python 中加載機器學習數據的不同方法。
### 使用 Python 標準庫加載數據
使用 Python 標準庫,您將使用模塊 CSV 和函數`reader()`加載 CSV 文件。 加載后,CSV 數據將自動轉換為 NumPy 數組,可用于機器學習。
例如,下面是一個小代碼,當您使用 Python API 運行時,它將加載沒有標題且包含數字字段的該數據集。 它還將自動將其轉換為 NumPy 數組。
```py
# Load CSV (using python)
import csv
import numpy
filename = 'pima-indians-diabetes.data.csv'
raw_data = open(filename, 'rt')
reader = csv.reader(raw_data, delimiter=',', quoting=csv.QUOTE_NONE)
x = list(reader)
data = numpy.array(x).astype('float')
print(data.shape)
```
簡而言之,該代碼命令程序加載一個對象,該對象可以對數據的每一行進行迭代,并且可以輕松地轉換為 NumPy 數組。 運行示例代碼將產生以下形狀的數組:
```
1 (768, 9)
```
### 用 NumPy 加載數據文件
在 Python 中加載機器學習數據的另一種方法是使用 NumPy 和`numpy.loadtxt()`函數。
在下面的示例代碼中,該函數假定您的文件沒有標題行,并且所有數據都使用相同的格式。 它還假定文件`pima-indians-diabetes.data.csv`存儲在當前目錄中。
```py
# Load CSV
import numpy
filename = 'pima-indians-diabetes.data.csv'
raw_data = open(filename, 'rt')
data = numpy.loadtxt(raw_data, delimiter=",")
print(data.shape)
```
運行上面的示例代碼會將文件加載為`numpy.ndarray`并產生以下數據形狀:
```
1 (768, 9)
```
如果可以使用 URL 檢索文件,則可以將以上代碼修改為以下代碼,同時產生相同的數據集:
```py
# Load CSV from URL using NumPy
from numpy import loadtxt
from urllib.request import urlopen
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indiansiabetes.data.csv'
raw_data = urlopen(url)
dataset = loadtxt(raw_data, delimiter=",")
print(dataset.shape)
```
運行代碼將產生相同的結果數據形狀:
```
1 (768, 9)
```

### 用 Pandas 加載數據文件
加載機器學習數據的第三種方法是使用 Pandas 和`pandas.read_csv()`函數。
`pandas.read_csv()`函數非常靈活,是加載機器學習數據的最理想方法。 它返回一個`pandas.DataFrame`,使您可以立即開始匯總和繪圖。
下面的示例代碼假定`pima-indians-diabetes.data.csv`文件存儲在當前目錄中。
```py
1 # Load CSV using Pandas
2 import pandas
3 filename = 'pima-indians-diabetes.data.csv'
4 names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
5 data = pandas.read_csv(filename, names=names)
6 print(data.shape)
```
您將在此處注意到,我們已將每個屬性的名稱明確標識為`DataFrame`。 當我們運行上面的示例代碼時,將打印以下形狀的數據:
```
1 (768, 9)
```
如果可以使用 URL 檢索文件,則可以對以上代碼進行以下修改,同時生成相同的數據集:
```py
1 # Load CSV using Pandas from URL
2 Import pandas
3 url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
4 names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
5 data = pandas.read_csv(url, names=names)
6 print(data.shape)
```
運行上面的示例代碼將下載一個 CSV 文件,對其進行解析,并生成以下形狀的已加載`DataFrame`:
```
1 (768, 9)
```
[下載示例和練習](https://gum.co/MnRYU)
- 介紹
- 學習 python 的 7 個理由
- 為什么 Python 很棒
- 學習 Python
- 入門
- 執行 Python 腳本
- 變量
- 字符串
- 字符串替換
- 字符串連接
- 字符串查找
- 分割
- 隨機數
- 鍵盤輸入
- 控制結構
- if語句
- for循環
- while循環
- 數據與操作
- 函數
- 列表
- 列表操作
- 排序列表
- range函數
- 字典
- 讀取文件
- 寫入文件
- 嵌套循環
- 切片
- 多個返回值
- 作用域
- 時間和日期
- try except
- 如何使用pip和 pypi
- 面向對象
- 類
- 構造函數
- 獲取器和設置器
- 模塊
- 繼承
- 靜態方法
- 可迭代對象
- Python 類方法
- 多重繼承
- 高級
- 虛擬環境
- 枚舉
- Pickle
- 正則表達式
- JSON 和 python
- python 讀取 json 文件
- 裝飾器
- 網絡服務器
- 音頻
- 用 Python 播放聲音
- python 文字轉語音
- 將 MP3 轉換為 WAV
- 轉錄音頻
- Tkinter
- Tkinter
- Tkinter 按鈕
- Tkinter 菜單
- Tkinter 標簽
- Tkinter 圖片
- Tkinter 畫布
- Tkinter 復選框
- Tkinter 輸入框
- Tkinter 文件對話框
- Tkinter 框架
- Tkinter 列表框
- Tkinter 消息框
- Tkinter 單選按鈕
- Tkinter 刻度
- 繪圖
- Matplotlib 條形圖
- Matplotlib 折線圖
- Seaborn 分布圖
- Seaborn 繪圖
- Seaborn 箱形圖
- Seaborn 熱力圖
- Seaborn 直線圖
- Seaborn 成對圖
- Seaborn 調色板
- Seaborn Pandas
- Seaborn 散點圖
- Plotly
- PyQt
- PyQt
- 安裝 PyQt
- PyQt Hello World
- PyQt 按鈕
- PyQt QMessageBox
- PyQt 網格
- QLineEdit
- PyQT QPixmap
- PyQt 組合框
- QCheckBox
- QSlider
- 進度條
- PyQt 表格
- QVBoxLayout
- PyQt 樣式
- 編譯 PyQt 到 EXE
- QDial
- QCheckBox
- PyQt 單選按鈕
- PyQt 分組框
- PyQt 工具提示
- PyQt 工具箱
- PyQt 工具欄
- PyQt 菜單欄
- PyQt 標簽小部件
- PyQt 自動補全
- PyQt 列表框
- PyQt 輸入對話框
- Qt Designer Python
- 機器學習
- 數據科學
- 如何從機器學習和 AI 認真地起步
- 為什么要使用 Python 進行機器學習?
- 機器學習庫
- 什么是機器學習?
- 區分機器學習,深度學習和 AI?
- 機器學習
- 機器學習算法比較
- 為什么要使用 Scikit-Learn?
- 如何在 Python 中加載機器學習數據
- 機器學習分類器
- 機器學習回歸
- Python 中的多項式回歸
- 決策樹
- k 最近鄰
- 訓練測試拆分
- 人臉檢測
- 如何為 scikit-learn 機器學習準備數據
- Selenium
- Selenium 瀏覽器
- Selenium Cookie
- Selenium 執行 JavaScript
- Selenium 按 ID 查找元素
- Selenium 無頭 Firefox
- Selenium Firefox
- Selenium 獲取 HTML
- Selenium 鍵盤
- Selenium 最大化
- Selenium 截圖
- Selenium 向下滾動
- Selenium 切換到窗口
- Selenium 等待頁面加載
- Flask 教程
- Flask 教程:Hello World
- Flask 教程:模板
- Flask 教程:路由