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.