Tôi đang cố tìm số lượng giá trị riêng biệt trong mỗi cột bằng cách sử dụng Pandas. Đây là những gì tôi đã làm.Tìm số phần tử riêng biệt trong DataFrame trong mỗi cột
import pandas as pd
df = pd.read_csv('train.csv')
# print(df)
a = pd.unique(df.values.ravel())
print(a)
Tính các phần tử duy nhất trong DataFrame bất kể hàng/cột, nhưng tôi cần tính cho mỗi cột có đầu ra được định dạng như dưới đây.
policyID 0
statecode 0
county 0
eq_site_limit 0
hu_site_limit 454
fl_site_limit 647
fr_site_limit 0
tiv_2011 0
tiv_2012 0
eq_site_deductible 0
hu_site_deductible 0
fl_site_deductible 0
fr_site_deductible 0
point_latitude 0
point_longitude 0
line 0
construction 0
point_granularity 0
Cách hiệu quả nhất để làm điều này, vì phương pháp này sẽ được áp dụng cho các tệp có kích thước lớn hơn 1,5 GB?
Dựa trên câu trả lời, df.apply(lambda x: len(x.unique()))
là nhanh nhất.
In[23]: %timeit df.apply(pd.Series.nunique)
1 loops, best of 3: 1.45 s per loop
In[24]: %timeit df.apply(lambda x: len(x.unique()))
1 loops, best of 3: 335 ms per loop
In[25]: %timeit df.T.apply(lambda x: x.nunique(), axis=1)
1 loops, best of 3: 1.45 s per loop
Tương tự như vậy tôi nghĩ 'df.apply (pd.Series.nunique)' cũng sẽ hoạt động (và tránh cần phải chuyển đổi nếu đó là vấn đề) . –
@ajcr có đó là tốt hơn thực sự, ban đầu tôi nghĩ rằng transpose là cần thiết để có được các cột như các giá trị chỉ số – EdChum
Làm thế nào để chỉ đếm tổng số lần xuất hiện duy nhất? –