1. Trang chủ
  2. » Giáo án - Bài giảng

Cẩm nang máy học với Python: Chương 2: Tải dữ liệu vào Python

22 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tải Dữ Liệu Vào Python
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Máy Học
Thể loại Tài Liệu
Năm xuất bản 2025
Thành phố Hà Nội
Định dạng
Số trang 22
Dung lượng 1,09 MB
File đính kèm Chapter 2. Loading Data.rar (1 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tải file txt vào Python Để tải file txt vào Python chúng ta dùng hàm open mặc định của Python. Trong dòng lệnh 4 chúng ta dùng hàm open để mở object là input_file_path với parameter là r nghĩa là chỉ ở chế độ đọc mà thôi. Các parameter của hàm open như sau

Trang 1

Tải file txt vào Python

Để tải file txt vào Python chúng ta dùng hàm open mặcđịnh của Python

Trong dòng lệnh 4 chúng ta dùng hàm open để mở object làinput_file_path với parameter là r nghĩa là chỉ ở chế độ đọc màthôi Các parameter của hàm open như sau

Trong dòng lệnh thứ 13 chúng ta dùng method closed để hỏiPython rằng file dữ liệu này vẫn đang mở và kết nối với Pythonhay không Nếu file vẫn đang mở thì kết quả trả lời là False, cònngược lại là True

Trang 2

Trong dòng lệnh 16 chúng ta dùng method mode để hỏi Pythonrằng file này đang ở chế độ nào Kết quả trả về là chế độ r(nghĩa là chỉ có đọc mà thôi).

Tải file tsv vào Dataframe của pandas

File tsv cũng tương tự như file csv nhưng các hàng cáchnhau bằng dấu tab Chúng ta có thể dùng thư viện pandas đểtải file tsv vào Python

import pandas as pd

Trong các câu lệnh trên chúng ta lưu ý các điểm sau:

 Chúng ta phải tải thư viện pandas vào Python vì pandaskhông phải là thư viện chuẩn cài sẵn của Python Do đóchúng ta phải dùng hàm import của Python để tải thư việnpandas vào Python

 Khi đã tải được thư viện Pandas, chúng ta có thể sử dụnghàm read_csv() để tải file dữ liệu CSV Để tiếp cận được vớihàm read_csv() chúng ta sử dụng phương pháp “dotnotation” (dấu chấm nhắc) Khi chúng ta viết pd.read_csv()nghĩa là trong thư viện pandas chúng ta vừa tải, hãy tìm kiếmtrong đó hàm read_csv()

 Vì file tsv của chúng ta lưu ở trên github do đó chúng ta phải

gõ đường dẫn của raw file (nghĩa là chúng ta phải nhấn vàonút Raw của file để lấy link raw file) trong dấu nháy đơn

 Chúng ta dùng parameter sep (viết tắt của separate) với lựachọn là ‘\t’ nghĩa là dữ liệu được cách nhau bởi dấu tab

Trang 3

Tải file csv vào Dataframe của pandas

Nhập file csv từ github

Bạn cần nhập tệp giá trị được phân tách bằng dấu phẩy(CSV) Sử dụng read_csv của thư viện pandas để tải tệp CSV từmáy tính hoặc được lưu trữ vào DataFrame của pandas:

để cho phép nó xử lý nhiều định dạng CSV khác nhau

Tệp CSV lấy tên từ thực tế là các giá trị được phân táchtheo nghĩa đen bằng dấu phẩy (ví dụ: một hàng có thể là2,"2015-01-01 00:00:00",0); Tuy nhiên, các tệp CSV thường sửdụng các dấu phân cách khác, chẳng hạn như các tab (được gọi

là tệp TSV) Tham số pandas sep cho phép chúng ta xác địnhdấu phân cách được sử dụng trong tệp Mặc dù không phải lúcnào cũng như vậy nhưng vấn đề định dạng phổ biến với tệp CSV

là dòng đầu tiên của tệp được sử dụng để xác định tiêu đề cột(ví dụ: số nguyên, ngày giờ, danh mục trong giải pháp của

Trang 4

chúng tôi) Tham số tiêu đề cho phép chúng ta chỉ định xemhàng tiêu đề có tồn tại hay không Nếu hàng tiêu đề không tồntại, chúng tôi đặt tiêu đề=Không.

Hàm read_csv trả về một DataFrame của gấu trúc: một đốitượng phổ biến và hữu ích để làm việc với dữ liệu dạng bảng màchúng ta sẽ đề cập sâu hơn trong suốt cuốn sách này

Nhập file csv có tiêu đề vào Dataframe

Pandas mặc định sẽ nhập dòng đầu tiên của file csv thànhtiêu đề cột cho Dataframe

Nhập file csv không có tiêu đề vào Dataframe

Trong trường hợp file csv không có tiêu đề chúng ta cầntạo ra một list tên tiêu đề cột và sau đó gán list đó vào đối sốnames trong hàm read_csv

Trang 5

Nhập file csv với kí tự cách khác dấu phẩy

Trong trường hợp flat file có các khoảng cách giá trị là dấuđặc biệt không phải là dấu phẩy như dưới đây

Chúng ta cũng vẫn có thể dùng read_csv nhưng với đối sốsep là kí tự đặc biệt đó

Tải một file Excel vào Dataframe

Tải file Excel từ local

Chúng ta dùng hàm read_excel với cú pháp sau

pd.read_excel(<excel_file_path>,sheet_name=<excel_sh eet_name>)

Trang 6

Tải file excel từ github

dataframe = pd.read_excel(url, sheet_name=0, header=0)

# View the first two rows

dataframe.head(2)

This solution is similar to our solution for reading CSV files.The main difference is the additional parameter, sheet_name,that specifies which sheet in the Excel file we wish toload sheet_name can accept both strings, containing the name

of the sheet, and integers, pointing to sheet positions indexed) If we need to load multiple sheets, we include them

(zero-as a list For example, sheet_name=[0,1,2, "Monthly Sales"] willreturn a dictionary of pandas DataFrames containing the first,second, and third sheets, and the sheet named Monthly Sales

Giải pháp này tương tự như giải pháp đọc tệp CSV Sự khácbiệt chính là tham số bổ sung, sheet_name, chỉ định trang tínhnào trong tệp Excel mà chúng ta muốn tải sheet_name có thểchấp nhận cả hai chuỗi chứa tên của trang tính và số nguyêntrỏ đến vị trí của trang tính (không được lập chỉ mục) Nếu cầntải nhiều trang tính, chúng tôi sẽ đưa chúng vào dưới dạng danhsách Ví dụ: sheet_name=[0,1,2, "Monthly Sales"] sẽ trả về một

Trang 7

từ điển gồm các DataFrames của pandas chứa các trang tínhđầu tiên, thứ hai và thứ ba và trang tính có tên Monthly Sales.

Tải file pickle vào Dataframe của pandas

Để đọc một file pickle series chúng ta dùng methodsread_pickle

Để đọc một file pickle của Dataframe chúng ta dùng methodread_pickle tương tự như series

Trang 8

Tải file feather vào Dataframe của pandas

Để tải file feather chúng ta dùng methods read_feather()

Tải file dictionray vào Dataframe của pandas

Tải file JSON vào Dataframe của pandas

Nhập file JSON từ github

Nhập tệp JSON vào pandas tương tự như một số công thứcgần đây nhất mà chúng ta đã thấy Sự khác biệt chính là tham

số định hướng (orient), cho biết cách cấu trúc tệp JSON Tuynhiên, có thể cần một số thử nghiệm để tìm ra đối số nào

Trang 9

(split, records, index, columns, or values) là đối số đúng Mộtcông cụ hữu ích khác mà pandas cung cấp là json_normalize, cóthể giúp chuyển đổi dữ liệu JSON bán cấu trúc thành DataFramecủa pandas.

dataframe = pd.read_json(url, orient='columns')

# View the first two rows

dataframe.head(2)

Nhập file JSOn từ file local

Chúng ta dùng methods read_json để tải file JSON vàoDataframe

Trang 10

Lưu ý là các biến date như born_dat, died_dt của file JSON khichuyển vào Dataframe sẽ có dạng rất kỳ quái Đó là vì các biếnnày trong file JSON có định dạng là ISO 8601 do đó khi tải vàoDataframe chúng sẽ trở thành biến chuỗi chứ không phải biếndates

Trang 11

Để chuyển biến date dạng chuỗi thành dạng date, chúng taphải dùng method to_datetime của pandas

Nếu chúng ta có sẵn file JSON thì chúng ta có thể tải trựctiếp với hàm read_json

Trang 12

Tải một tập tin Parquet

Parquet là một định dạng lưu trữ dữ liệu phổ biến trongkhông gian dữ liệu lớn Nó thường được sử dụng với các công cụ

dữ liệu lớn như Hadoop và Spark Mặc dù PySpark nằm ngoàitrọng tâm của cuốn sách này, nhưng rất có thể các công ty hoạtđộng trên quy mô lớn sẽ sử dụng định dạng lưu trữ dữ liệu hiệuquả như Parquet và việc biết cách đọc nó vào khung dữ liệu vàthao tác với nó là rất có giá trị

Tải file Avro

Apache Avro là một định dạng dữ liệu nhị phân, mã nguồn

mở dựa trên các lược đồ cho cấu trúc dữ liệu Tại thời điểm viếtbài, nó không phổ biến như Parquet Tuy nhiên, các định dạng

dữ liệu nhị phân lớn như Avro, thrift và Protocol Buffers đangngày càng phổ biến do tính chất hiệu quả của chúng Nếu bạnlàm việc với các hệ thống dữ liệu lớn, bạn có thể sẽ gặp phảimột trong những định dạng này trong tương lai gần

Trang 13

Truy vấn một cơ sở dữ liệu SQLite Database

SQL là ngôn ngữ chung để lấy dữ liệu từ cơ sở dữ liệu.Trước tiên chúng tôi sử dụng create_engine để xác định kết nốivới công cụ cơ sở dữ liệu SQL có tên là SQLite Tiếp theo, chúngtôi sử dụng read_sql_query của pandas để truy vấn cơ sở dữ liệu

đó bằng SQL và đưa kết quả vào DataFrame

SQL là một ngôn ngữ theo đúng nghĩa của nó và mặc dùnằm ngoài phạm vi của cuốn sách này nhưng nó chắc chắnđáng để biết đối với bất kỳ ai muốn tìm hiểu về học máy Truyvấn SQL của chúng ta, SELECT * FROM data, yêu cầu cơ sở dữliệu cung cấp cho chúng ta tất cả các cột (*) từ bảng được gọi là

dữ liệu

Lưu ý rằng đây là một trong số ít phương pháp sẽ khôngchạy nếu không có mã bổ sung Cụ thể, create_engine('sqlite:///sample.db') giả định rằng cơ sở dữ liệu SQLite đã tồn tại

# Load libraries

import pandas as pd

from sqlalchemy import create_engine

# Create a connection to the database

database_connection = create_engine('sqlite:///sample.db')

# Load data

Trang 14

dataframe = pd.read_sql_query('SELECT * FROM data', database_connection)

# View first two rows

dataframe.head(2)

Truy vấn một cơ sở dữ liệu SQL từ xa

Trong số tất cả các công thức được trình bày trong chươngnày, đây có lẽ là công thức chúng ta sẽ sử dụng nhiều nhấttrong thế giới thực Mặc dù việc kết nối và đọc từ cơ sở dữ liệusqlite mẫu rất hữu ích nhưng nó có thể không đại diện cho cácbảng bạn cần kết nối trong môi trường doanh nghiệp Hầu hếtcác phiên bản SQL mà bạn kết nối sẽ yêu cầu bạn kết nối vớimáy chủ và cổng của máy từ xa, chỉ định tên người dùng vàmật khẩu để xác thực Ví dụ này yêu cầu bạn khởi động mộtphiên bản SQL đang chạy cục bộ bắt chước một máy chủ từ xatrên localhost để bạn có thể hiểu được quy trình làm việc

# Read the SQL query into a dataframe

dataframe = pd.read_sql("select * from data", conn)

# View the first two rows

dataframe.head(2)

Trang 15

Tải dữ liệu từ Google Sheet

Mặc dù có thể dễ dàng tải xuống Google Sheets nhưng đôikhi việc có thể đọc chúng trực tiếp vào Python mà không cầnbất kỳ bước trung gian nào cũng rất hữu ích Tham số truy vấn /export?format=csv ở cuối URL tạo ra một điểm cuối mà từ đóchúng ta có thể tải tệp xuống hoặc đọc tệp đó vào pandas

Sử dụng pandas read_CSV và chuyển URL xuất GoogleSheet dưới dạng CSV

Tải dữ liệu từ S3 bucket

Nhiều doanh nghiệp hiện lưu giữ dữ liệu trong các kho lưutrữ blob của nhà cung cấp đám mây như Amazon S3 hoặcGoogle Cloud Storage (GCS) Những người thực hành học máythường kết nối với các nguồn này để lấy dữ liệu Mặc dù URI S3(s3://machine-learning-python-cookbook/data.csv) là công khainhưng nó vẫn yêu cầu bạn cung cấp thông tin xác thực truy cậpAWS của riêng bạn để truy cập vào nó Điều đáng chú ý là các

Trang 16

đối tượng công khai cũng có URL HTTP mà từ đó chúng có thểtải xuống tệp, chẳng hạn như URL này cho tệp CSV.

Thêm tùy chọn lưu trữ vào pandas để cấp cho nó quyềntruy cập vào đối tượng S3:

Tải dữ liệu phi cấu trúc

Mặc dù dữ liệu có cấu trúc có thể dễ dàng được đọc từCSV, JSON hoặc các cơ sở dữ liệu khác nhau, nhưng dữ liệu phicấu trúc có thể khó khăn hơn và có thể yêu cầu xử lý tùy chỉnh

về sau Đôi khi, việc mở và đọc tệp bằng chức năng mở cơ bảncủa Python sẽ rất hữu ích Điều này cho phép chúng ta mở file

và sau đó đọc nội dung của file đó

Sử dụng hàm mở Python cơ bản để tải thông tin:

Trang 17

# Write it to text.txt locally

Tải dữ liệu từ thư viện seaborn

Thư viện seaborn có sẵn một số tập tin dữ liệu Chúng ta

có thể dùng method sns Load_dataset để tải dữ liệu vào Python

anscome là một file dữ liệu có sẵn trong thư viện seaborn

Tải dữ liệu từ thư viện scikit-learn

scikit-learn có một số bộ dataset mà bạn có thể sử dụng

# Load scikit-learn's datasets

from sklearn import datasets

# Load digits dataset

Trang 18

# View first observation

load_iris: Chứa 150 quan sát về số đo của hoa diên vĩ Đây là

một bộ dữ liệu tốt để khám phá các thuật toán phân loại

load_digits: Chứa 1.797 quan sát từ hình ảnh của các chữ số

viết tay Đây là một bộ dữ liệu tốt để dạy phân loại hình ảnh.

Để xem thêm chi tiết về bất kỳ bộ dữ liệu nào trong sốnày, bạn có thể in thuộc tính DESCR:

# Load scikit-learn's datasets

from sklearn import datasets

# Load digits dataset

Trang 19

:Number of Attributes: 64

:Attribute Information: 8x8 image of integer pixels in the range 0 16.

:Missing Attribute Values: None

:Creator: E Alpaydin (alpaydin '@' boun.edu.tr)

:Date: July; 1998

Tạo dataset mô phỏng

Bạn cần tạo một tập dữ liệu dữ liệu mô phỏng scikit-learncung cấp nhiều phương pháp để tạo dữ liệu mô phỏng Trong số

đó, ba phương thức đặc biệt hữu ích là make_regression,make_classification và make_blobs

Khi chúng ta muốn một tập dữ liệu được thiết kế để sửdụng với hồi quy tuyến tính, make_regression là một lựa chọntốt:

# Load library

from sklearn.datasets import make_regression

# Generate features matrix, target vector, and the true coefficients

features, target, coefficients = make_regression(n_samples = 100,

# View feature matrix and target vector

print('Feature Matrix\n', features[:3])

print('Target Vector\n', target[:3])

# Load library

from sklearn.datasets import make_classification

# Generate features matrix and target vector

features, target = make_classification(n_samples = 100,

n_features = 3,

Trang 20

# View feature matrix and target vector

print('Feature Matrix\n', features[:3])

print('Target Vector\n', target[:3])

Cuối cùng, nếu chúng ta muốn một tập dữ liệu được thiết

kế để hoạt động tốt với các kỹ thuật phân cụm, scikit-learncung cấp make_blobs:

# Load library

from sklearn.datasets import make_blobs

# Generate features matrix and target vector

features, target = make_blobs(n_samples = 100,

# View feature matrix and target vector

print('Feature Matrix\n', features[:3])

print('Target Vector\n', target[:3])

Như có thể thấy rõ từ các giải pháp, make_regression trả

về ma trận đặc trưng của các giá trị float và vectơ đích của cácgiá trị float, trong khi make_classification và make_blobs trả về

ma trận đặc trưng của các giá trị float và vectơ mục tiêu củacác số nguyên biểu thị tư cách thành viên trong một lớp

Trang 21

Bộ dữ liệu mô phỏng của scikit-learn cung cấp các tùychọn mở rộng để kiểm soát loại dữ liệu được tạo Tài liệu củascikit-learn chứa mô tả đầy đủ về tất cả các tham số, nhưng chỉ

có một số tham số đáng chú ý

Trong make_regression và make_classification,n_informative xác định số lượng đối tượng được sử dụng để tạovectơ mục tiêu Nếu n_informative nhỏ hơn tổng số thuộc tính(n_features), tập dữ liệu thu được sẽ có các đối tượng dư thừa

có thể được xác định thông qua kỹ thuật lựa chọn đối tượng

Ngoài ra, make_classification còn chứa tham số trọng số(weights) cho phép chúng ta mô phỏng các tập dữ liệu với cáclớp không cân bằng Ví dụ: trọng số = [.25, 75] sẽ trả về mộttập dữ liệu có 25% quan sát thuộc một lớp và 75% quan sátthuộc lớp thứ hai

Đối với make_blobs, tham số trung tâm (center) xác định

số lượng cụm được tạo Sử dụng thư viện trực quan hóamatplotlib, chúng ta có thể hình dung các cụm được tạo bởimake_blobs:

Ngày đăng: 04/10/2023, 20:58

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w