Python và SQL để phân tích dữ liệu

Bài viết này cung cấp tổng quan về các câu lệnh SQL cơ bản cho các nhà khoa học dữ liệu và giải thích cách có thể khởi tạo một công cụ SQL trong Python và được sử dụng để truy vấn dữ liệu từ cơ sở dữ liệu

Là một nhà khoa học dữ liệu sử dụng Python, bạn thường cần lấy dữ liệu của mình từ cơ sở dữ liệu quan hệ được lưu trữ trên máy chủ cục bộ hoặc trên đám mây [e. g. đám mây AWS]. Có nhiều cách để tiếp cận điều này. Ví dụ: bạn có thể truy vấn dữ liệu của mình trong Oracle, lưu tệp dưới dạng tệp

engine = create_engine[*args, **kwargs]
7, sau đó nhập dữ liệu đó bằng Python. Tuy nhiên, cách hiệu quả nhất để sử dụng SQL trực tiếp trong Python. Kết hợp SQL và Pandas sẽ cung cấp cho bạn nhiều tùy chọn để truy vấn, xử lý và sử dụng dữ liệu cho dự án của bạn bằng Python

Những điều đầu tiên đầu tiên. SQL là gì?

SQL [còn gọi là Ngôn ngữ truy vấn có cấu trúc] là ngôn ngữ lập trình được sử dụng để quản lý hoặc truy vấn dữ liệu được lưu trữ trong hệ thống quản lý cơ sở dữ liệu quan hệ [RDBMS]. SQL là ngôn ngữ thống trị để xử lý dữ liệu có cấu trúc trong đó các thực thể trong cơ sở dữ liệu [e. g. bảng hoặc thực thể bảng] có liên quan với nhau [đó là lý do tại sao các cơ sở dữ liệu này được gọi là cơ sở dữ liệu quan hệ]. Có các tùy chọn khác để xử lý dữ liệu đó, nhưng SQL là ngôn ngữ phổ biến nhất, được sử dụng rộng rãi trong ngành

"SQL" được phát âm như thế nào?

SQL được phát triển tại IBM vào đầu những năm 1970 và ban đầu nó được gọi là “SEQUEL [Ngôn ngữ truy vấn tiếng Anh có cấu trúc]”. Sau đó, tên này được đổi thành SQL [Ngôn ngữ truy vấn có cấu trúc] do vấn đề nhãn hiệu. Tuy nhiên, cách phát âm “see-qu-el” [/ˈsiːkwəl/ ] vẫn tồn tại trong ngôn ngữ và đó là cách phát âm được hầu hết các học viên áp dụng

[Mẹo chuyên nghiệp. khi bạn đi phỏng vấn, hãy chắc chắn rằng bạn phát âm nó “see-qu-el”, nếu bạn muốn công việc. ]

Cơ sở dữ liệu quan hệ trông như thế nào?

Amazon Web Services cung cấp định nghĩa tốt nhất cho một databl quan hệ

Cơ sở dữ liệu quan hệ là một tập hợp các mục dữ liệu với các mối quan hệ được xác định trước giữa chúng. Các mục này được tổ chức dưới dạng một tập hợp các bảng có cột và hàng. Các bảng được sử dụng để chứa thông tin về các đối tượng được biểu diễn trong cơ sở dữ liệu. Mỗi cột trong bảng chứa một loại dữ liệu nhất định và một trường lưu trữ giá trị thực của một thuộc tính. Các hàng trong bảng đại diện cho một tập hợp các giá trị có liên quan của một đối tượng hoặc thực thể. Mỗi hàng trong một bảng có thể được đánh dấu bằng một mã định danh duy nhất được gọi là khóa chính và các hàng giữa nhiều bảng có thể được tạo liên quan bằng cách sử dụng khóa ngoại. Dữ liệu này có thể được truy cập theo nhiều cách khác nhau mà không cần tự tổ chức lại các bảng cơ sở dữ liệu

Cơ sở dữ liệu có thể có thiết kế rất phức tạp, với nhiều bảng và mỗi bảng có nhiều thực thể [cột] và nhiều hàng. Sẽ cực kỳ khó khăn hoặc thậm chí là không thể truy vấn dữ liệu khi không biết mối quan hệ giữa các bảng. ERD [Sơ đồ mối quan hệ thực thể] được sử dụng để trực quan hóa các mối quan hệ này và cũng hiển thị các thực thể trong mỗi bảng và kiểu dữ liệu của chúng. Quản trị viên cơ sở dữ liệu của bạn sẽ có thể cung cấp ERD cho cơ sở dữ liệu của bạn

ERD mẫu — https. //www. mô hình trực quan. com/guide/data-modeling/what-is-entity-relationship-diagram/

SQL được sử dụng như thế nào trong Python?

Có nhiều cách để sử dụng SQL trong Python. Nhiều thư viện đã được phát triển cho mục đích này có thể được sử dụng. SQLite và MySQL là ví dụ về các thư viện này

Trong bài viết này, chúng ta sẽ sử dụng Python Pandas kết hợp với thư viện

engine = create_engine[*args, **kwargs]
8

Tạo Công cụ SQL

Bắt đầu nào. Chúng ta cần cài đặt và sau đó nhập các thư viện trước. Chúng tôi sẽ sử dụng tính năng

engine = create_engine[*args, **kwargs]
9 từ thư viện này

!pip install sqlalchemyimport pandas as pd
from sqlalchemy import create_engine

Sau khi thư viện được nhập, chúng ta cần tạo một công cụ SQL bằng cách sử dụng lệnh này để tạo một lớp mới`. Ví dụ động cơ`

engine = create_engine[*args, **kwargs]

Đối số đầu tiên thường là một chuỗi biểu thị phương ngữ cơ sở dữ liệu và đối số kết nối ở dạng URL và có thể được viết là

dialect[+driver]://user:password@host/dbname[?key=value..]

trong đó

dialect[+driver]://user:password@host/dbname[?key=value..]
0 là tên cơ sở dữ liệu, chẳng hạn như
dialect[+driver]://user:password@host/dbname[?key=value..]
1,
dialect[+driver]://user:password@host/dbname[?key=value..]
2,
dialect[+driver]://user:password@host/dbname[?key=value..]
3, v.v. , và
dialect[+driver]://user:password@host/dbname[?key=value..]
4tên của một DBAPI, chẳng hạn như
dialect[+driver]://user:password@host/dbname[?key=value..]
5,
dialect[+driver]://user:password@host/dbname[?key=value..]
6,
dialect[+driver]://user:password@host/dbname[?key=value..]
7, v.v. Thông tin chi tiết về điều này có thể được tìm thấy tại https. //www. sqlalchemy. tổ chức/

Truy vấn dữ liệu sử dụng câu lệnh SQL

Bây giờ bạn đã được kết nối với cơ sở dữ liệu, bạn có thể gửi truy vấn dữ liệu. để sử dụng

dialect[+driver]://user:password@host/dbname[?key=value..]
8, bạn cần bọc các câu lệnh SQL của mình trong một vùng chứa, gửi nó đến cơ sở dữ liệu, nhận lại phản hồi, sau đó đặt phản hồi vào một khung dữ liệu
dialect[+driver]://user:password@host/dbname[?key=value..]
9. Hai mệnh đề chính phải có trong mọi truy vấn là
sql = """
SELECT *
FROM table_1
"""
df = pd.read_sql_query[sql, engine]
df.head[]
0 và
sql = """
SELECT *
FROM table_1
"""
df = pd.read_sql_query[sql, engine]
df.head[]
1

  • sql = """
    SELECT *
    FROM table_1
    """
    df = pd.read_sql_query[sql, engine]
    df.head[]
    0 cho phép bạn chọn một tập hợp con các cột [hoặc tất cả chúng] từ một bảng,
  • sql = """
    SELECT *
    FROM table_1
    """
    df = pd.read_sql_query[sql, engine]
    df.head[]
    1 chỉ định [các] cột đang được lấy từ bảng nào

Ví dụ: đoạn mã sau sẽ trả về tất cả các thực thể [cột] từ

sql = """
SELECT *
FROM table_1
"""
df = pd.read_sql_query[sql, engine]
df.head[]
4lưu phản hồi vào một khung dữ liệu và hiển thị phần đầu

sql = """
SELECT *
FROM table_1
"""
df = pd.read_sql_query[sql, engine]
df.head[]

Thay vào đó, bạn cũng có thể lấy các cột cụ thể từ bảng, sử dụng mã này để thay thế

SELECT entity_1, entity_2, entity_3
FROM table_1

Nếu bạn đang xử lý nhiều bảng [mà bạn chắc chắn sẽ làm trong một dự án trong thế giới thực], bạn có thể cần chỉ định thực thể nào từ bảng nào vì các thực thể quan tâm có thể đến từ các bảng khác nhau trong cơ sở dữ liệu. Chúng ta sẽ thảo luận cách nhiều thực thể từ nhiều bảng có thể là truy vấn, nhưng ví dụ này dành cho các thực thể từ một bảng. Trong trường hợp này, bạn có thể sử dụng

sql = """
SELECT *
FROM table_1
"""
df = pd.read_sql_query[sql, engine]
df.head[]
5 trong câu lệnh SQL của mình

SELECT table_1.entity_1, table_1.entity_2
FROM table_1

Bạn cũng có thể gán bí danh cho từng tên thực thể hoặc tên bảng nhằm mục đích đơn giản hóa hoặc dễ đọc

SELECT t.entity_1 AS name, t.entity_2 AS id
FROM table_1 AS t

Nếu bạn muốn lấy các hàng riêng biệt từ một cột, bạn có thể gửi câu lệnh SQL này

SELECT DISTINCT entity_1
FROM table_1

Nếu bạn muốn sắp xếp dữ liệu của mình theo một cột cụ thể [hoặc nhiều cột], bạn có thể sử dụng

sql = """
SELECT *
FROM table_1
"""
df = pd.read_sql_query[sql, engine]
df.head[]
6 và chỉ định thứ tự bạn muốn
sql = """
SELECT *
FROM table_1
"""
df = pd.read_sql_query[sql, engine]
df.head[]
7 [tăng dần] hoặc
sql = """
SELECT *
FROM table_1
"""
df = pd.read_sql_query[sql, engine]
df.head[]
8 [giảm dần]. Hãy nhớ rằng, nếu bạn sử dụng nhiều cột trong
sql = """
SELECT *
FROM table_1
"""
df = pd.read_sql_query[sql, engine]
df.head[]
6 thì thứ tự SQL sắp xếp dữ liệu sẽ từ trái sang phải

SELECT entity_1, entity_2, entity_3
FROM table_1
ORDER BY entity_1 DESC, entity_3 ASC

Đôi khi bạn đang xử lý một tập dữ liệu rất lớn, nhưng bạn có thể chỉ cần truy xuất một tập dữ liệu giới hạn từ cơ sở dữ liệu. Nếu trường hợp này, bạn có thể sử dụng

SELECT entity_1, entity_2, entity_3
FROM table_1
0

SELECT *
FROM table_1
LIMIT 10

Nếu bạn muốn bao gồm một điều kiện cho truy vấn, bạn có thể sử dụng

SELECT entity_1, entity_2, entity_3
FROM table_1
1 Bạn có thể sử dụng điều kiện boolean hoặc
SELECT entity_1, entity_2, entity_3
FROM table_1
2 cho các thực thể chuỗi. Ví dụ

engine = create_engine[*args, **kwargs]
0

hoặc

SELECT entity_1, entity_2, entity_3
FROM table_1
3

hoặc

SELECT entity_1, entity_2, entity_3
FROM table_1
4

Ký tự đại diện [hoặc ký tự đại diện] là ký hiệu được sử dụng để thay thế hoặc đại diện cho một hoặc nhiều ký tự trong một từ. Một cái quen thuộc là

SELECT entity_1, entity_2, entity_3
FROM table_1
5 được sử dụng cho
SELECT entity_1, entity_2, entity_3
FROM table_1
6hoặc
SELECT entity_1, entity_2, entity_3
FROM table_1
7 được sử dụng cho
SELECT entity_1, entity_2, entity_3
FROM table_1
8 Chúng ta có thể sử dụng các ký tự đại diện một cách hiệu quả trong SQL khi truy vấn các thực thể chuỗi bằng cách sử dụng câu lệnh
SELECT entity_1, entity_2, entity_3
FROM table_1
9 trong SQL. Sự khác biệt giữa
SELECT table_1.entity_1, table_1.entity_2
FROM table_1
0 và
SELECT table_1.entity_1, table_1.entity_2
FROM table_1
1 là
SELECT table_1.entity_1, table_1.entity_2
FROM table_1
0 cũng chiếm dấu gạch dưới, nhưng
SELECT table_1.entity_1, table_1.entity_2
FROM table_1
1 thì không. Trong Python, bạn nên sử dụng
SELECT table_1.entity_1, table_1.entity_2
FROM table_1
4 thay vì một
SELECT table_1.entity_1, table_1.entity_2
FROM table_1
0. Câu lệnh dưới đây trả về tất cả các hàng trong đó
SELECT table_1.entity_1, table_1.entity_2
FROM table_1
6 bắt đầu bằng
SELECT table_1.entity_1, table_1.entity_2
FROM table_1
7

engine = create_engine[*args, **kwargs]
1

SELECT table_1.entity_1, table_1.entity_2
FROM table_1
8 làm cho truy vấn này không nhạy cảm với trường hợp ký tự và
SELECT table_1.entity_1, table_1.entity_2
FROM table_1
9 trả về tất cả các hàng trong đó thực thể KHÔNG giống như ký tự đại diện

Để xử lý các giá trị null, bạn có thể sử dụng

engine = create_engine[*args, **kwargs]
2

hoặc

SELECT t.entity_1 AS name, t.entity_2 AS id
FROM table_1 AS t
0

Thường thì bạn cần tổng hợp dữ liệu, nhóm dữ liệu và áp dụng các điều kiện cho dữ liệu được tổng hợp. Những tuyên bố tổng hợp này bao gồm

SELECT t.entity_1 AS name, t.entity_2 AS id
FROM table_1 AS t
1 Ví dụ

engine = create_engine[*args, **kwargs]
3

Khi sử dụng tổng hợp, bạn nên sử dụng

SELECT t.entity_1 AS name, t.entity_2 AS id
FROM table_1 AS t
2 thay vì
SELECT t.entity_1 AS name, t.entity_2 AS id
FROM table_1 AS t
3 như

engine = create_engine[*args, **kwargs]
4

Để nhóm dữ liệu của bạn theo thực thể cụ thể, bạn có thể sử dụng

SELECT t.entity_1 AS name, t.entity_2 AS id
FROM table_1 AS t
4

engine = create_engine[*args, **kwargs]
5

Tham gia bàn

Khi truy vấn dữ liệu từ nhiều bảng, bạn cần nối các bảng này. Có nhiều cách nối bảng trong SQL. Hình bên dưới minh họa các phép nối này. Bạn có thể sẽ làm việc với các phép nối bên trong thường xuyên hơn, nhưng điều quan trọng là phải hiểu tác dụng của từng loại phép nối

Các kiểu nối bảng khác nhau trong SQL — https. //www. công xưởng. com/sql/tham gia

Việc nối các bảng chỉ có thể được thực hiện khi có một thực thể chung giữa hai bảng và bạn cần xác định mối quan hệ đó bằng cách sử dụng

SELECT t.entity_1 AS name, t.entity_2 AS id
FROM table_1 AS t
5

engine = create_engine[*args, **kwargs]
6

Những câu lệnh này bao gồm những điều cơ bản về SQL trong Python. Bạn có thể kết hợp các câu lệnh này dựa trên cơ sở dữ liệu bạn đang xử lý, loại dữ liệu bạn cần. Có nhiều câu lệnh khác mà bạn có thể sử dụng. https. //www. w3schools. com/sql/ cung cấp tổng quan toàn diện hơn về các câu lệnh SQL

Nick Minaie, Tiến sĩ [Hồ sơ LinkedIn] là cố vấn cấp cao và nhà khoa học dữ liệu có tầm nhìn xa, đồng thời đại diện cho sự kết hợp độc đáo giữa kỹ năng lãnh đạo, chuyên môn khoa học dữ liệu đẳng cấp thế giới, sự nhạy bén trong kinh doanh và khả năng dẫn dắt sự thay đổi của tổ chức. Nhiệm vụ của anh là thúc đẩy thực hành Trí tuệ nhân tạo [AI] và Học máy trong ngành

Python và SQL được sử dụng như thế nào trong phân tích dữ liệu?

Sự khác biệt đáng kể giữa SQL và Python là SQL được sử dụng để truy cập và trích xuất dữ liệu từ cơ sở dữ liệu. Đồng thời, Python được sử dụng để phân tích và thao tác dữ liệu bằng cách sử dụng các bài kiểm tra hồi quy, kiểm tra chuỗi thời gian và các tính toán khác .

Cái nào tốt hơn để phân tích dữ liệu SQL hoặc Python?

SQL chắc chắn là một ngôn ngữ dễ học hơn Python . Nó có một cú pháp rất cơ bản với mục đích duy nhất là giao tiếp với cơ sở dữ liệu quan hệ. Do một lượng lớn dữ liệu được lưu trữ trong cơ sở dữ liệu quan hệ nên việc truy xuất dữ liệu bằng truy vấn SQL thường là bước đầu tiên trong bất kỳ dự án phân tích dữ liệu nào.

Python và SQL có thể được sử dụng cùng nhau không?

Chúng ta cũng có thể sử dụng Python với SQL . Trong bài viết này, chúng ta sẽ tìm hiểu cách kết nối SQL với Python bằng mô-đun 'MySQL Connector Python'.

Python và SQL có đủ cho khoa học dữ liệu không?

Vì vậy, không, Python và SQL là không đủ cho khoa học dữ liệu. Họ được yêu cầu. Nhưng nhiều công cụ khác cũng như mong muốn và khả năng giải quyết vấn đề

Chủ Đề