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

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

Đ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

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

Tải file txt vào Python Để tải file txt vào Python dùng hàm open mặc định Python Trong dòng lệnh dùng hàm open để mở object input_file_path với parameter r nghĩa chế độ đọc mà Các parameter hàm open sau Trong dòng lệnh thứ 13 dùng method closed để hỏi Python file liệu mở kết nối với Python hay khơng Nếu file mở kết trả lời False, ngược lại True Trong dòng lệnh 16 dùng method mode để hỏi Python file chế độ Kết trả chế độ r (nghĩa có đọc mà thơi) Tải file tsv vào Dataframe pandas File tsv tương tự file csv hàng cách dấu tab Chúng ta dùng thư viện pandas để tải file tsv vào Python import pandas as pd Trong câu lệnh lưu ý điểm sau:  Chúng ta phải tải thư viện pandas vào Python pandas khơng phải thư viện chuẩn cài sẵn Python Do phải dùng hàm import Python để tải thư viện pandas vào Python  Khi tải thư viện Pandas, sử dụng hàm read_csv() để tải file liệu CSV Để tiếp cận với hàm read_csv() sử dụng phương pháp “dot notation” (dấu chấm nhắc) Khi viết pd.read_csv() nghĩa thư viện pandas vừa tải, tìm kiếm hàm read_csv()  Vì file tsv lưu github phải gõ đường dẫn raw file (nghĩa phải nhấn vào nút Raw file để lấy link raw file) dấu nháy đơn  Chúng ta dùng parameter sep (viết tắt separate) với lựa chọn ‘\t’ nghĩa liệu cách dấu tab Tải file csv vào Dataframe pandas Nhập file csv từ github Bạn cần nhập tệp giá trị phân tách dấu phẩy (CSV) Sử dụng read_csv thư viện pandas để tải tệp CSV từ máy tính lưu trữ vào DataFrame pandas: # Load library import pandas as pd # Create URL url = 'https://raw.githubusercontent.com/chrisalbon/sim_data/master/data.csv' # Load dataset dataframe = pd.read_csv(url) # View first two rows dataframe.head(2) Có hai điều cần lưu ý tải tệp CSV Đầu tiên, việc xem nhanh nội dung tệp trước tải thường hữu ích Có thể hữu ích xem trước tập liệu cấu trúc cần đặt tham số để tải tệp Thứ hai, read_csv có 30 tham số tài liệu gây khó khăn May mắn thay, tham số chủ yếu phép xử lý nhiều định dạng CSV khác Tệp CSV lấy tên từ thực tế giá trị phân tách theo nghĩa đen dấu phẩy (ví dụ: hàng 2,"2015-01-01 00:00:00",0); Tuy nhiên, tệp CSV thường sử dụng dấu phân cách khác, chẳng hạn tab (được gọi tệp TSV) Tham số pandas sep cho phép xác định dấu phân cách sử dụng tệp Mặc dù lúc vấn đề định dạng phổ biến với tệp CSV dòng tệp sử dụng để xác định tiêu đề cột (ví dụ: số nguyên, ngày giờ, danh mục giải pháp chúng tôi) Tham số tiêu đề cho phép định xem hàng tiêu đề có tồn hay không Nếu hàng tiêu đề không tồn tại, đặt tiêu đề=Không Hàm read_csv trả DataFrame gấu trúc: đối tượng phổ biến hữu ích để làm việc với liệu dạng bảng mà đề cập sâu suốt sách Nhập file csv có tiêu đề vào Dataframe Pandas mặc định nhập dòng file csv thành tiê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 đề cần tạo list tên tiêu đề cột sau gán list vào đối số names hàm read_csv Nhập file csv với kí tự cách khác dấu phẩy Trong trường hợp flat file có khoảng cách giá trị dấu đặc biệt dấu phẩy Chúng ta dùng read_csv với đối số sep kí tự đặc biệt Tải 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(,sheet_name=) Tải file excel từ github # Load library import pandas as pd # Create URL url = 'https://raw.githubusercontent.com/chrisalbon/sim_data/master/data.xlsx' # Load data 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 to load sheet_name can accept both strings, containing the name of the sheet, and integers, pointing to sheet positions (zeroindexed) If we need to load multiple sheets, we include them as a list For example, sheet_name=[0,1,2, "Monthly Sales"] will return a dictionary of pandas DataFrames containing the first, second, and third sheets, and the sheet named Monthly Sales Giải pháp tương tự giải pháp đọc tệp CSV Sự khác biệt tham số bổ sung, sheet_name, định trang tính tệp Excel mà muốn tải sheet_name chấp nhận hai chuỗi chứa tên trang tính số nguyên trỏ đến vị trí trang tính (không lập mục) Nếu cần tải nhiều trang tính, chúng tơi đưa chúng vào dạng danh sách Ví dụ: sheet_name=[0,1,2, "Monthly Sales"] trả từ điển gồm DataFrames pandas chứa trang tính đầu tiên, thứ hai thứ ba trang tính có tên Monthly Sales Tải file pickle vào Dataframe pandas Để đọc file pickle series dùng methods read_pickle Để đọc file pickle Dataframe dùng method read_pickle tương tự series Tải file feather vào Dataframe pandas Để tải file feather dùng methods read_feather() Tải file dictionray vào Dataframe pandas Tải file JSON vào Dataframe pandas Nhập file JSON từ github Nhập tệp JSON vào pandas tương tự số công thức gần mà thấy Sự khác biệt tham số định hướng (orient), cho biết cách cấu trúc tệp JSON Tuy nhiên, cần số thử nghiệm để tìm đối số (split, records, index, columns, or values) đối số Một công cụ hữu ích khác mà pandas cung cấp json_normalize, giúp chuyển đổi liệu JSON bán cấu trúc thành DataFrame pandas # Load library import pandas as pd # Create URL url = 'https://raw.githubusercontent.com/chrisalbon/sim_data/master/data.json' # Load data 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ào Dataframe Lưu ý biến date born_dat, died_dt file JSON chuyển vào Dataframe có dạng kỳ quái Đó biến file JSON có định dạng ISO 8601 tải vào Dataframe chúng trở thành biến chuỗi biến dates Để chuyển biến date dạng chuỗi thành dạng date, phải dùng method to_datetime pandas Nếu có sẵn file JSON tải trực tiếp với hàm read_json Tải tập tin Parquet Parquet định dạng lưu trữ liệu phổ biến khơng gian liệu lớn Nó thường sử dụng với công cụ liệu lớn Hadoop Spark Mặc dù PySpark nằm trọng tâm sách này, công ty hoạt động quy mô lớn sử dụng định dạng lưu trữ liệu hiệu Parquet việc biết cách đọc vào khung liệu thao tác với có giá trị # Load library import pandas as pd # Create URL url = 'https://machine-learning-python-cookbook.s3.amazonaws.com/data.parquet' # Load data dataframe = pd.read_parquet(url) # View the first two rows dataframe.head(2) Tải file Avro Apache Avro định dạng liệu nhị phân, mã nguồn mở dựa lược đồ cho cấu trúc liệu Tại thời điểm viết bài, khơng phổ biến Parquet Tuy nhiên, định dạng liệu nhị phân lớn Avro, thrift Protocol Buffers ngày phổ biến tính chất hiệu chúng Nếu bạn làm việc với hệ thống liệu lớn, bạn gặp phải định dạng tương lai gần # Load library import requests import pandavro as pdx # Create URL url = 'https://machine-learning-python-cookbook.s3.amazonaws.com/data.avro' # Download file r = requests.get(url) open('data.avro', 'wb').write(r.content) # Load data dataframe = pdx.read_avro('data.avro') # View the first two rows dataframe.head(2) Truy vấn sở liệu SQLite Database SQL ngôn ngữ chung để lấy liệu từ sở liệu Trước tiên sử dụng create_engine để xác định kết nối với cơng cụ sở liệu SQL có tên SQLite Tiếp theo, sử dụng read_sql_query pandas để truy vấn sở liệu SQL đưa kết vào DataFrame SQL ngơn ngữ theo nghĩa nằm ngồi phạm vi sách chắn đáng để biết muốn tìm hiểu học máy Truy vấn SQL chúng ta, SELECT * FROM data, yêu cầu sở liệu cung cấp cho tất cột (*) từ bảng gọi liệu Lưu ý số phương pháp khơng chạy khơng có mã bổ sung Cụ thể, create_engine('sqlite:/// sample.db') giả định sở liệu SQLite tồn # 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 dataframe = pd.read_sql_query('SELECT * FROM data', database_connection) # View first two rows dataframe.head(2) Truy vấn sở liệu SQL từ xa Trong số tất cơng thức trình bày chương này, có lẽ cơng thức sử dụng nhiều giới thực Mặc dù việc kết nối đọc từ sở liệu sqlite mẫu hữu ích khơng đại diện cho bảng bạn cần kết nối môi trường doanh nghiệp Hầu hết phiên SQL mà bạn kết nối yêu cầu bạn kết nối với máy chủ cổng máy từ xa, định tên người dùng mật để xác thực Ví dụ yêu cầu bạn khởi động phiên SQL chạy cục bắt chước máy chủ từ xa localhost để bạn hiểu quy trình làm việc # Import libraries import pymysql import pandas as pd # Create a DB connection # Use the following example to start a DB instance # https://github.com/kylegallatin/mysql-db-example conn = pymysql.connect( host='localhost', user='root', password = "", db='db', ) # Read the SQL query into a dataframe dataframe = pd.read_sql("select * from data", conn) # View the first two rows dataframe.head(2) Tải liệu từ Google Sheet Mặc dù dễ dàng tải xuống Google Sheets đơi việc đọc chúng trực tiếp vào Python mà không cần bước trung gian hữu ích Tham số truy vấn / export?format=csv cuối URL tạo điểm cuối mà từ tải tệp xuống đọc tệp vào pandas Sử dụng pandas read_CSV chuyển URL xuất Google Sheet dạng CSV # Import libraries import pandas as pd # Google Sheet URL that downloads the sheet as a CSV url = "https://docs.google.com/spreadsheets/d/"\ "1ehC-9otcAuitqnmWksqt1mOrTRCL38dv0K9UjhwzTOA/export?format=csv" # Read the CSV into a dataframe dataframe = pd.read_csv(url) # View the first two rows dataframe.head(2) Tải liệu từ S3 bucket Nhiều doanh nghiệp lưu giữ liệu kho lưu trữ blob nhà cung cấp đám mây Amazon S3 Google Cloud Storage (GCS) Những người thực hành học máy thường kết nối với nguồn để lấy liệu Mặc dù URI S3 (s3://machine-learning-python-cookbook/data.csv) cơng khai yêu cầu bạn cung cấp thông tin xác thực truy cập AWS riêng bạn để truy cập vào Điều đáng ý đối tượng cơng khai có URL HTTP mà từ chúng tải xuống tệp, chẳng hạn URL cho tệp CSV Thêm tùy chọn lưu trữ vào pandas để cấp cho quyền truy cập vào đối tượng S3: # Import libraries import pandas as pd # S3 path to CSV s3_uri = "s3://machine-learning-python-cookbook/data.csv" # Set AWS credentials (replace with your own) ACCESS_KEY_ID = "xxxxxxxxxxxxx" SECRET_ACCESS_KEY = "xxxxxxxxxxxxxxxx" # Read the CSV into a dataframe dataframe = pd.read_csv(s3_uri,storage_options={ "key": ACCESS_KEY_ID, "secret": SECRET_ACCESS_KEY, } ) # View first two rows dataframe.head(2) Tải liệu phi cấu trúc Mặc dù liệu có cấu trúc dễ dàng đọc từ CSV, JSON sở liệu khác nhau, liệu phi cấu trúc khó khăn yêu cầu xử lý tùy chỉnh sau Đôi khi, việc mở đọc tệp chức mở Python hữu ích Điều cho phép mở file sau đọc nội dung file Sử dụng hàm mở Python để tải thông tin: # Import libraries import requests # URL to download the txt file from txt_url = "https://machine-learning-python-cookbook.s3.amazonaws.com/text.txt" # Get the txt file r = requests.get(txt_url) # Write it to text.txt locally with open('text.txt', 'wb') as f: f.write(r.content) # Read in the file with open('text.txt', 'r') as f: text = f.read() # Print the content print(text) Tải liệu từ thư viện seaborn Thư viện seaborn có sẵn số tập tin liệu Chúng ta dùng method sns Load_dataset để tải liệu vào Python anscome file liệu có sẵn thư viện seaborn Tải liệu từ thư viện scikit-learn scikit-learn có số dataset mà bạn sử dụng # Load scikit-learn's datasets from sklearn import datasets # Load digits dataset digits = datasets.load_digits() # Create features matrix features = digits.data # Create target vector target = digits.target # View first observation features[0] array([ 0., 0., 5., 13., 9., 1., 0., 0., 15., 5., 0., 0., 3., 15., 2., 0., 11., 8., 0., 0., 4., 12., 0., 0., 8., 8., 0., 0., 5., 8., 0., 0., 9., 8., 0., 0., 4., 11., 0., 1., 12., 7., 0., 0., 2., 14., 5., 0., 0., 0., 6., 13., 10., 0., 0., 10., 12., 0., 0., 0., 13., 15., 10., 0.]) Thông thường, không muốn thực công việc tải, chuyển đổi làm tập liệu giới thực trước khám phá số thuật tốn phương pháp học máy May mắn thay, scikit-learn kèm với số liệu phổ biến mà tải nhanh chóng Những tập liệu thường gọi tập liệu “đồ chơi” chúng nhỏ nhiều so với tập liệu mà thấy giới thực Một số liệu mẫu phổ biến scikitlearn là: load_iris: Chứa 150 quan sát số đo hoa diên vĩ Đây liệu tốt để khám phá thuật toán phân loại load_digits: Chứa 1.797 quan sát từ hình ảnh chữ số viết tay Đây liệu tốt để dạy phân loại hình ảnh Để xem thêm chi tiết liệu số này, bạn in thuộc tính DESCR: # Load scikit-learn's datasets from sklearn import datasets # Load digits dataset digits = datasets.load_digits() # Print the attribute print(digits.DESCR) _digits_dataset: Optical recognition of handwritten digits dataset -**Data Set Characteristics:** :Number of Instances: 1797 :Number of Attributes: 64 :Attribute Information: 8x8 image of integer pixels in the range 16 :Missing Attribute Values: None :Creator: E Alpaydin (alpaydin '@' boun.edu.tr) :Date: July; 1998 Tạo dataset mô Bạn cần tạo tập liệu liệu mô scikit-learn cung cấp nhiều phương pháp để tạo liệu mơ Trong số đó, ba phương thức đặc biệt hữu ích make_regression, make_classification make_blobs Khi muốn tập liệu thiết kế để sử dụng với hồi quy tuyến tính, make_regression lựa chọn tố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, n_features = 3, n_informative = 3, n_targets = 1, noise = 0.0, coef = True, random_state = 1) # View feature matrix and target vector print('Feature Matrix\n', features[:3]) print('Target Vector\n', target[:3]) Feature Matrix [[ 1.29322588 -0.61736206 -0.11044703] [-2.793085 0.36633201 [ 0.80186103 -0.18656977 1.93752881] 0.0465673 ]] Target Vector [-10.37865986 25.5124503 19.67705609] Nếu quan tâm đến việc tạo tập liệu mô để phân loại, make_classification: # Load library from sklearn.datasets import make_classification # Generate features matrix and target vector features, target = make_classification(n_samples = 100, n_features = 3, sử dụng n_informative = 3, n_redundant = 0, n_classes = 2, weights = [.25, 75], random_state = 1) # View feature matrix and target vector print('Feature Matrix\n', features[:3]) print('Target Vector\n', target[:3]) Feature Matrix [[ 1.06354768 -1.42632219 1.02163151] [ 0.23156977 1.49535261 0.33251578] [ 0.15972951 0.83533515 -0.40869554]] Target Vector [1 0] Cuối cùng, muốn tập liệu thiết kế để hoạt động tốt với kỹ thuật phân cụm, scikit-learn cung 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, n_features = 2, centers = 3, cluster_std = 0.5, shuffle = True, random_state = 1) # View feature matrix and target vector print('Feature Matrix\n', features[:3]) print('Target Vector\n', target[:3]) Feature Matrix [[ -1.22685609 3.25572052] [ -9.57463218 -4.38310652] [-10.71976941 -4.20558148]] Target Vector [0 1] Như thấy rõ từ giải pháp, make_regression trả ma trận đặc trưng giá trị float vectơ đích giá trị float, make_classification make_blobs trả ma trận đặc trưng giá trị float vectơ mục tiêu số nguyên biểu thị tư cách thành viên lớp

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