Python Pandas - So sánh với SQL

Vì nhiều người dùng Pandas tiềm năng đã quen thuộc với SQL nên trang này nhằm cung cấp một số ví dụ về cách có thể thực hiện các hoạt động SQL khác nhau bằng cách sử dụng gấu trúc.

import pandas as pd

url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'

tips=pd.read_csv(url)
print tips.head()

Nó là output như sau -

total_bill   tip      sex  smoker  day     time  size
0        16.99  1.01   Female      No  Sun  Dinner      2
1        10.34  1.66     Male      No  Sun  Dinner      3
2        21.01  3.50     Male      No  Sun  Dinner      3
3        23.68  3.31     Male      No  Sun  Dinner      2
4        24.59  3.61   Female      No  Sun  Dinner      4

LỰA CHỌN

Trong SQL, lựa chọn được thực hiện bằng cách sử dụng danh sách các cột được phân tách bằng dấu phẩy mà bạn chọn (hoặc dấu * để chọn tất cả các cột) -

SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;

Với Pandas, việc chọn cột được thực hiện bằng cách chuyển danh sách tên cột vào DataFrame của bạn -

tips[['total_bill', 'tip', 'smoker', 'time']].head(5)

Hãy kiểm tra toàn bộ chương trình -

import pandas as pd

url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'
 
tips=pd.read_csv(url)
print tips[['total_bill', 'tip', 'smoker', 'time']].head(5)

Nó là output như sau -

total_bill   tip  smoker     time
0       16.99  1.01      No   Dinner
1       10.34  1.66      No   Dinner
2       21.01  3.50      No   Dinner
3       23.68  3.31      No   Dinner
4       24.59  3.61      No   Dinner

Gọi DataFrame mà không có danh sách tên cột sẽ hiển thị tất cả các cột (tương tự như SQL's *).

Ở ĐÂU

Lọc trong SQL được thực hiện thông qua mệnh đề WHERE.

SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;

DataFrames có thể được lọc theo nhiều cách; trực quan nhất trong số đó là sử dụng lập chỉ mục Boolean.

tips[tips['time'] == 'Dinner'].head(5)

Hãy kiểm tra toàn bộ chương trình -

import pandas as pd

url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'

tips=pd.read_csv(url)
print tips[tips['time'] == 'Dinner'].head(5)

Nó là output như sau -

total_bill   tip      sex  smoker  day    time  size
0       16.99  1.01   Female     No   Sun  Dinner    2
1       10.34  1.66     Male     No   Sun  Dinner    3
2       21.01  3.50     Male     No   Sun  Dinner    3
3       23.68  3.31     Male     No   Sun  Dinner    2
4       24.59  3.61   Female     No   Sun  Dinner    4

Câu lệnh trên chuyển một chuỗi các đối tượng True / False đến DataFrame, trả về tất cả các hàng có True.

GroupBy

Thao tác này tìm nạp số lượng bản ghi trong mỗi nhóm trong toàn bộ tập dữ liệu. Ví dụ: một truy vấn lấy cho chúng ta số mẹo do giới tính để lại -

SELECT sex, count(*)
FROM tips
GROUP BY sex;

Tương đương với Pandas sẽ là -

tips.groupby('sex').size()

Hãy kiểm tra toàn bộ chương trình -

import pandas as pd

url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'

tips=pd.read_csv(url)
print tips.groupby('sex').size()

Nó là output như sau -

sex
Female   87
Male    157
dtype: int64

N hàng trên cùng

SQL trả về top n rows sử dụng LIMIT -

SELECT * FROM tips
LIMIT 5 ;

Tương đương với Pandas sẽ là -

tips.head(5)

Hãy kiểm tra ví dụ đầy đủ -

import pandas as pd

url = 'https://raw.github.com/pandas-dev/pandas/master/pandas/tests/data/tips.csv'

tips=pd.read_csv(url)
tips = tips[['smoker', 'day', 'time']].head(5)
print tips

Nó là output như sau -

smoker   day     time
0      No   Sun   Dinner
1      No   Sun   Dinner
2      No   Sun   Dinner
3      No   Sun   Dinner
4      No   Sun   Dinner

Đây là một vài thao tác cơ bản mà chúng tôi đã so sánh, mà chúng tôi đã học, trong các chương trước của Thư viện Pandas.