Chúng ta sẽ xem xét ba phương pháp sử dụng SQL trong bài viết này. Phương thức đầu tiên, kết nối với cơ sở dữ liệu SQL của bạn thông qua ngôn ngữ lập trình Python bằng các lệnh SQL truyền thống, có lẽ là cách sử dụng truyền thống nhất của nó. Phương pháp thứ hai là sử dụng các lệnh SQL trong khung dữ liệu Pandas của bạn với truy vấn, mà tôi nghĩ là phương pháp dễ nhất trong số các phương pháp này để hiển thị trong Jupyter Notebook của bạn. Cuối cùng, bạn có thể thực hiện các lệnh giống như SQL trong khung dữ liệu Pandas có chức năng tương tự như các hàm SQL truyền thống.
Cách sử dụng SQL trong Python
- SQLite/MS-SQL Server/Oracle/MySQL/Vân vân
- Truy vấn gấu trúc
- Truy vấn khung dữ liệu
Thông tin khác từ Matt Przybyla 5 câu hỏi thường gặp trong cuộc phỏng vấn xin việc về Khoa học dữ liệu của bạn
SQLite/MS-SQL Server/Oracle/MySQL/Vân vân
Chúng ta sẽ thảo luận về hai trong số nhiều thư viện/mô-đun mà bạn có thể sử dụng thông qua Python. Sqlite3 và Pyodbc.
Tất cả các phương pháp này hoạt động giống nhau ở chỗ chúng cần những thứ sau.
- nhập thư viện Python
- kết nối với cơ sở dữ liệu
- tạo một đối tượng con trỏ để bạn có thể sử dụng các lệnh SQL
Vì vậy, hãy xem cách kết nối với SQLite từ cơ sở dữ liệu cục bộ
import sqlite3
connection = sqlite3.connect[“database_name.db”]
cursor = connection.cursor[]
cursor.execute[“SELECT * FROM table_name”].fetchall[]
Ở dòng cuối cùng này, bạn có thể tưởng tượng rằng bạn cũng có thể thực hiện tất cả các lệnh SQL bình thường của mình [e. g. , WHERE, GROUP BY và ORDER BY, để kể tên một số].
Mô-đun tiếp theo, Pyodbc, có thể được sử dụng cho kết nối từ xa, cho phép bạn kết nối với cơ sở dữ liệu MS-SQL, Oracle và MySQL.
Ví dụ máy chủ MS-SQL
Hãy nhớ rằng đây không phải là mã duy nhất bạn có thể sử dụng để kết nối với các cơ sở dữ liệu này
import pyodbc
connection = pyodbc.connect['Driver={SQL Server};'
'Server=server_name;'
'Database=database_name;'
'Trusted_Connection=yes;']
# OR ADD THIS TO THAT SAME STRING ABOVE IN PLACE OF
Trusted_Connection^
'UID=USER_ID_HERE;'
'PWD=PASSWORD_HERE;'
cursor = connection.cursor[]
cursor.execute['SELECT * FROM table_name']
Ví dụ Oracle
substitute 'Driver={SQL Server};' for 'Driver={Oracle in
OraClient12Home1};'
or other Oracle driver
Ví dụ MySQL
connection = pyodbc.connect['CData ODBC Driver for MySQL};'
'User=user_name;'
'Password=your_pasword;'
'Database=db_name;'
'Server=server_name;'
'Port=port_number;']
'Database=db_name;']
or other MySQL driver
Với tất cả các kết nối, bạn có thể đọc SQL vào khung dữ liệu Pandas bằng mã này.
df = pd.read_sql['SELECT * FROM Table', connection]
Đây là một cách hay để sử dụng SQL với Python thông qua Pandas. Rất nhiều nhà khoa học dữ liệu thích làm việc với các khung dữ liệu vì chúng ’ dễ sử dụng và hoạt động tốt với các thư viện Python dành cho khoa học dữ liệu và máy học. Ví dụ: bạn có thể truy vấn dữ liệu của mình bằng một trong các kết nối SQL như được mô tả ở trên và lưu nó vào khung dữ liệu của bạn. Sau đó, bạn có thể tạo tập huấn luyện và kiểm tra từ tập dữ liệu chính đó để sử dụng trong mô hình khoa học dữ liệu của mình.
Truy vấn gấu trúc
Truy vấn Pandas cho phép bạn truy vấn trực tiếp khung dữ liệu của mình bằng Python mà không cần bất kỳ kết nối nào vì bạn ' chỉ đơn giản là làm việc với dữ liệu đã có . Cách tiếp cận này ít rắc rối hơn và vẫn thu được những lợi ích của ngôn ngữ truy vấn tương tự như SQL. Các lợi ích bao gồm so sánh các cột để phân tích, cũng như các phép tính số học khác giữa các trường, v.v.
Dưới đây là một vài ví dụ về truy vấn khung dữ liệu của bạn bằng mã giống như SQL
# return rows where values from one column are bigger than that of
another
df.query['column_1 > column_2']
# see which rows where the 'column_1' values
# are greater than the mean of the total column
# use the '@' to reference 'column_mean'
column_mean = df['column_1'].mean[]
df.query['Confirmed_New > @column_mean']
# text conditions
# use double quotes for matching on the string value
# all the rows returned have 'green' for the 'text_column'
df.query['text_column == "green"'].head[]
Đây chỉ là một số ví dụ về dữ liệu trả về có thể được sử dụng để phân tích tính năng
Truy vấn khung dữ liệu
Phương thức cuối cùng này không phải là SQL, cũng không sử dụng phương thức truy vấn, nhưng nó vẫn sử dụng các lệnh giống như SQL mà bạn có thể sử dụng trong khung dữ liệu Pandas của mình bằng Python
Đây là một cách chúng ta có thể thực hiện phương pháp này
print['Percent of data that is above 30 years old OR were born between
2010 and 2021:”,
100*round[df[[df['age'] > 30] | [df['birthdate'] >= '2010–01–01'] &
[df['birthdate']