Làm cách nào để trích xuất dữ liệu từ SQL bằng Python?

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ách

Hì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
5

Sau đó, 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
6

Danh 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ã

Ảnh chụp màn hình tệp json của tác giả

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ứ 921

Hì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
2

Trong 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
4

Hì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
5

Khi 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
6

5. 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:
soup = BeautifulSoup[f, "lxml"]
0 bằng văn bản bạn đã sao chép

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
8

Vì 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:
soup = BeautifulSoup[f, "lxml"]
1 để trả về dữ liệu json

!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
0

Phầ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

Làm cách nào để lấy dữ liệu từ MySQL bằng Python?

Bạn có thể truy xuất/tìm nạp dữ liệu từ một bảng trong MySQL bằng truy vấn SELECT. Truy vấn/câu lệnh này trả về nội dung của bảng đã chỉ định ở dạng bảng và nó được gọi là tập kết quả

Bạn có thể trích xuất dữ liệu từ SQL không?

Trích xuất cơ sở dữ liệu SQL từ một bảng đơn. Bạn có thể sử dụng câu lệnh SELECT với các mệnh đề FROM và WHERE để trích xuất dữ liệu từ một bảng . Mệnh đề SELECT chỉ định các trường chứa dữ liệu bạn muốn trích xuất hoặc hiển thị.

Làm cách nào để chuyển đổi SQL sang CSV bằng Python?

Cách sử dụng. Chỉ cần chạy python mysqldump_to_csv. py theo sau là tên tệp của tệp SQL . Bạn có thể chỉ định nhiều tệp SQL và tất cả chúng sẽ được nối vào một tệp CSV.

Làm cách nào tôi có thể truy xuất dữ liệu từ cơ sở dữ liệu SQL?

Trong SQL, để truy xuất dữ liệu được lưu trữ trong các bảng của chúng tôi, chúng tôi sử dụng câu lệnh SELECT . Kết quả của câu lệnh này luôn ở dạng bảng mà chúng ta có thể xem bằng phần mềm máy khách cơ sở dữ liệu của mình hoặc sử dụng với các ngôn ngữ lập trình để xây dựng các trang web động hoặc ứng dụng máy tính để bàn.

Chủ Đề