Hướng dẫn về cách lấy các bộ dữ liệu định dạng khác nhau cho danh mục khoa học dữ liệu và máy học của bạn
Hình ảnh được cung cấp bởi Gerd Altmann từ Pixabay
Khai thác dữ liệu liên quan đến việc lấy dữ liệu từ các nguồn khác nhau và chuyển đổi nó thành định dạng hữu ích để xử lý hoặc phân tích thêm. Đây là bước đầu tiên của quy trình Trích xuất-Chuyển đổi-Tải [ETL] trong quy trình kỹ thuật dữ liệu
Là một nhà khoa học dữ liệu, bạn có thể cần kết hợp dữ liệu có sẵn ở nhiều định dạng tệp như JSON, XML, CSV và SQL
Trong hướng dẫn này, chúng tôi sẽ sử dụng các thư viện python như pandas, json và yêu cầu đọc dữ liệu từ các nguồn khác nhau và tải chúng vào sổ ghi chép Jupyter dưới dạng khung dữ liệu pandas
1. tệp CSV
Điều này đề cập đến tệp ‘ giá trị được phân tách bằng dấu phẩy’ được sử dụng để lưu trữ dữ liệu ở định dạng bảng, tương tự như bảng tính. Mỗi dòng trong tệp là một quan sát [hoặc bản ghi] và mỗi bản ghi có một hoặc nhiều tính năng được phân tách bằng dấu phẩy
Hình ảnh của tệp csv trong trình soạn thảo văn bản
Thông thường, không phải lúc nào cũng vậy, dòng đầu tiên đại diện cho tên đối tượng địa lý
Chúng tôi sẽ sử dụng dữ liệu kết quả toán học từ dữ liệu. trang web chính phủ
Trước khi chúng tôi tạo khung dữ liệu gấu trúc từ dữ liệu, điều quan trọng trước tiên là xem qua tệp bằng thư viện đọc sẵn có của python. Đoạn mã sau hiển thị 5 dòng đầu tiên của tệp đã tải xuống
Những gì cần chú ý
- Liệu chúng ta có cần thêm đối số với
!pip install bs4
1 hay không - Nếu dòng đầu tiên chứa tên biến. Nếu không, chúng tôi sẽ sử dụng
!pip install bs4
2 - Nếu có bất kỳ hàng trống nào ở trên cùng, chúng ta cần bỏ qua bằng cách sử dụng
!pip install bs4
3
Mã bên dưới tải xuống tệp trực tiếp từ trang web và tạo khung dữ liệu Pandas
file_link = '//data.cityofnewyork.us/api/views/7yig-nj52/rows.csv'
df_csv = pd.read_csv[file_link]
2. dữ liệu XML
Extensible Markup Language, hay XML, là một ngôn ngữ đánh dấu rất giống với HTML. Bạn có thể nhận ra dữ liệu có định dạng XML vì nó được đánh dấu bằng các thẻ duy nhất dành riêng cho dữ liệu mà chúng đại diện, không giống như các thẻ được xác định trước của HTML
Chúng tôi sẽ tiếp tục sử dụng dữ liệu kết quả toán học từ dữ liệu. gov cung cấp tùy chọn tải xuống dữ liệu ở định dạng XML
Chạy mã bên dưới trong sổ ghi chép Jupyter sẽ in 20 dòng đầu tiên
Hình ảnh của tệp XML trên trình chỉnh sửa mã
Để đọc dữ liệu XML, chúng tôi sử dụng thư viện python có tên là BeautifulSoup. Để cài đặt BeautifulSoup, hãy dán mã bên dưới vào sổ ghi chép Jupyter
!pip install bs4
Sau đó nhập thư viện, mở tệp và tải nội dung của nó vào BeautifulSoup
from bs4 import BeautifulSoupwith open["math results.xml"] as f:
soup = BeautifulSoup[f, "lxml"]
Từ dữ liệu XML, chúng ta sẽ sử dụng phương thức
!pip install bs4
4 của BeautifulSoup để trả về các thẻ dưới dạng danh sáchHình ảnh của find_all của tác giả
Đối với trường hợp của chúng tôi, các thẻ quan tâm là
!pip install bs4
5Sau đó, chúng tôi sẽ lặp qua các hàng và đối với mỗi thẻ, truy xuất giá trị bên trong nó bằng phương pháp
!pip install bs4
6Danh sách các danh sách có tên 'dữ liệu' đại diện cho tất cả các bản ghi của chúng tôi
Hình ảnh 5 bản ghi đầu tiên của tác giả
Bước tiếp theo là tạo một khung dữ liệu gấu trúc và chuyển các cột sẽ được sử dụng cho dữ liệu
df_xml = pd.DataFrame[data, columns=['district', 'grade','number_tested', 'mean_scale_score']]
3. dữ liệu JSON
Ký hiệu đối tượng JavaScript hoặc JSON, thu gọn dữ liệu ở định dạng kiểu từ điển. Tệp json cho kết quả toán học có tại liên kết này. Dưới đây là ảnh chụp màn hình của tệp bằng trình chỉnh sửa mã
JSON được phát triển sau XML nhưng đã trở nên phổ biến hơn theo thời gian. Hai định dạng thường được sử dụng để gửi dữ liệu qua API web được thảo luận ở điểm 5 bên dưới
Thư viện Pandas cung cấp một cách đơn giản để đọc trong tệp json; . Bạn có thể chuyển tùy chọn định hướng tùy thuộc vào cách dữ liệu được định dạng. Tài liệu của gấu trúc giải thích các tùy chọn định hướng
Dữ liệu json của chúng tôi được định dạng hơi khác và
!pip install bs4
7 trả về lỗi. Nó có rất nhiều thông tin meta, gần 920 dòng. Dữ liệu thực tế bắt đầu từ dòng thứ 921Hình ảnh các thẻ meta và dữ liệu được thu gọn của tệp json của tác giả
Hình ảnh bên dưới hiển thị ảnh chụp màn hình dữ liệu bằng trình chỉnh sửa mã notepad ++. Lưu ý rằng 8 trường đầu tiên trên mỗi hàng là vô dụng
Chúng tôi sẽ sử dụng thư viện json. Thư viện này đọc dữ liệu json dưới dạng từ điển
!pip install bs4
2Trong trường hợp của chúng tôi, sẽ có 2 mục từ điển; . Do đó, chúng tôi có thể lấy thông tin dữ liệu bằng cách sử dụng
!pip install bs4
9!pip install bs4
4Hình ảnh bên trái bên dưới hiển thị dữ liệu của chúng tôi dưới dạng danh sách các danh sách. Hình ảnh bên phải sử dụng khả năng hiểu danh sách để chỉ trả về các mục từ phần tử thứ 8 trong mỗi danh sách
Tiếp theo là tạo một khung dữ liệu gấu trúc. Dựa trên kiến thức của chúng tôi về tập dữ liệu, chúng tôi sẽ chuyển các tên cột
4. cơ sở dữ liệu SQL
Ngôn ngữ truy vấn có cấu trúc hoặc SQL, cho phép chúng tôi truy cập và thao tác cơ sở dữ liệu. Bạn có thể trích xuất dữ liệu từ các tệp và cơ sở dữ liệu SQL bằng thư viện pandas. Điều này là bằng cách mở cơ sở dữ liệu hoặc bằng cách chạy truy vấn SQL
Hai thư viện python có thể được sử dụng để tạo kết nối tùy thuộc vào loại cơ sở dữ liệu;
Đối với mục đích của chúng tôi, chúng tôi có một tệp cơ sở dữ liệu SQLite với các kết quả toán học mà chúng tôi đã làm việc với. SQLite cung cấp lưu trữ dữ liệu cục bộ cho các ứng dụng và thiết bị riêng lẻ. Đọc thêm về thời điểm sử dụng SQLite tại đây. Do đó, chúng tôi sẽ sử dụng thư viện sqlite3. Tệp db chỉ có một bảng
!pip install bs4
5Khi làm việc với cơ sở dữ liệu SQL máy khách/máy chủ lớn như MySQL và PostgreSQL, hãy sử dụng thư viện sqlalchemy. Kiểm tra tài liệu SQLAlchemy về cách tải các cơ sở dữ liệu khác nhau bao gồm SQLite mà chúng tôi sẽ triển khai bằng mã bên dưới
!pip install bs4
65. Trích xuất dữ liệu từ web bằng API
Giao diện lập trình ứng dụng hoặc API, cung cấp cách thức để các công ty như Facebook, Twitter, Google và những công ty khác chia sẻ dữ liệu của họ với người dùng. Điều này không khuyến khích việc quét web tạo ra một khu vực màu xám hợp pháp
Các công ty này cung cấp địa chỉ web của API công khai từ đó các nhà phát triển có thể truy cập dữ liệu và sử dụng dữ liệu đó để phân tích hoặc tạo ứng dụng của riêng họ. Một số yêu cầu thông tin đăng nhập khi gửi yêu cầu trong khi những yêu cầu khác là công khai. Họ cũng cung cấp tài liệu về cách định dạng các yêu cầu URL
Trong phần này, chúng tôi sẽ lấy dữ liệu từ danh mục dữ liệu của Ngân hàng Thế giới. Trang web không yêu cầu thông tin đăng nhập. Tài liệu API có sẵn tại đây
Trang này có một danh sách các chỉ số với các tùy chọn để tải xuống bằng API. Chúng tôi sẽ xem xét 'số lượng chủ doanh nghiệp nữ' cho thấy kết quả trên mỗi quốc gia mỗi năm
Cuộn xuống dữ liệu chỉ báo bạn muốn và nhấp vào tùy chọn truy cập 'API'
Ảnh chụp màn hình từ danh mục ngân hàng thế giới
Điều này sẽ chuyển hướng bạn đến một trang web mới với dữ liệu json thô. Sao chép URL từ thanh địa chỉ và mở sổ ghi chép Jupyter mới. Viết mã bên dưới, thay thế văn bản
from bs4 import BeautifulSoupwith open["math results.xml"] as f:0 bằng văn bản bạn đã sao chép
soup = BeautifulSoup[f, "lxml"]
Python có thư viện yêu cầu để gửi yêu cầu HTTP bằng python. Đoạn mã dưới đây trả về một đối tượng phản hồi
!pip install bs4
8Vì dữ liệu ở định dạng json nên chúng ta sẽ gọi
from bs4 import BeautifulSoupwith open["math results.xml"] as f:1 để trả về dữ liệu json
soup = BeautifulSoup[f, "lxml"]
!pip install bs4
0Điều này trả về một danh sách với hai phần từ điển. Phần đầu tiên chứa thông tin meta. Phần thứ hai chứa dữ liệu thực tế
Do đó, để tạo khung dữ liệu, hãy sử dụng danh sách [1] để lập chỉ mục cho phần tử thứ hai của danh sách
!pip install bs4
0Phần kết luận
Trong bài đăng này, chúng tôi đã xem xét cách trích xuất dữ liệu ở 5 định dạng khác nhau và tải nó vào khung dữ liệu Pandas. Mã hoàn chỉnh có sẵn ở đây trên Github
Các kỹ năng trích xuất dữ liệu cực kỳ có giá trị đối với một nhà khoa học dữ liệu muốn thu thập và phân tích các bộ dữ liệu trong thế giới thực. Bước tiếp theo sau khi trích xuất là chuyển đổi dữ liệu thành định dạng có cấu trúc và tổ chức