Trên khung dữ liệu gấu, tôi biết tôi có thể nhóm trên một hoặc nhiều cột và sau đó lọc các giá trị xuất hiện nhiều hơn/ít hơn số đã cho.Pandas: Lọc dataframe cho các giá trị quá thường xuyên hoặc quá hiếm
Nhưng tôi muốn thực hiện điều này trên mọi cột trên khung dữ liệu. Tôi muốn xóa các giá trị quá ít (giả sử xảy ra ít hơn 5% số lần) hoặc quá thường xuyên. Ví dụ, hãy xem xét một khung dữ liệu với các cột sau: city of origin, city of destination, distance, type of transport (air/car/foot), time of day, price-interval
.
import pandas as pd
import string
import numpy as np
vals = [(c, np.random.choice(list(string.lowercase), 100, replace=True)) for c in
'city of origin', 'city of destination', 'distance, type of transport (air/car/foot)', 'time of day, price-interval']
df = pd.DataFrame(dict(vals))
>> df.head()
city of destination city of origin distance, type of transport (air/car/foot) time of day, price-interval
0 f p a n
1 k b a f
2 q s n j
3 h c g u
4 w d m h
Nếu đây là một dataframe lớn, nó làm cho tinh thần để loại bỏ các hàng có mặt hàng giả mạo, ví dụ, nếu time of day = night
xảy ra chỉ 3% thời gian, hoặc nếu foot
phương thức vận tải là rất hiếm, và vân vân .
Tôi muốn xóa tất cả các giá trị như vậy khỏi tất cả các cột (hoặc danh sách các cột). Một ý tưởng tôi có là làm một value_counts
trên mỗi cột, transform
và thêm một cột cho mỗi giá trị_giá trị; sau đó lọc dựa trên việc chúng có ở trên hay dưới ngưỡng. Nhưng tôi nghĩ rằng phải có một cách tốt hơn để đạt được điều này?
Hãy xem sklearn tính năng phát hiện – Moritz