मैं पांडों का उपयोग करके प्रत्येक कॉलम में अलग-अलग मानों की गिनती खोजने की कोशिश कर रहा हूं। यह जो मैंने किया है।प्रत्येक कॉलम में डेटाफ्रेम में विशिष्ट तत्वों की गिनती
import pandas as pd
df = pd.read_csv('train.csv')
# print(df)
a = pd.unique(df.values.ravel())
print(a)
यह DataFrame पंक्तियों/स्तंभों पर ध्यान दिए बिना में अद्वितीय तत्व में गिना जाता है, लेकिन मैं नीचे के रूप में स्वरूपित उत्पादन के साथ प्रत्येक स्तंभ के लिए गिनती की जरूरत है।
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
ऐसा करने का सबसे प्रभावी तरीका क्या होगा, क्योंकि यह विधि 1.5 जीबी से अधिक आकार वाली फ़ाइलों पर लागू होगी?
जवाब के आधार पर, df.apply(lambda x: len(x.unique()))
सबसे तेज है।
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
इसी प्रकार मुझे लगता है कि 'df.apply (pd.Series.nunique)' भी काम करेगा (और यदि यह कोई समस्या है तो इसे स्थानांतरित करने की आवश्यकता से बचें) । –
@ajcr हां वास्तव में बेहतर है, शुरुआत में मैंने सोचा था कि स्तंभों को इंडेक्स मानों के रूप में प्राप्त करने के लिए स्थानांतरण आवश्यक था – EdChum
अद्वितीय अवसरों की कुल संख्या को कैसे गिनें? –