পান্ডাস ডেটা ফ্রেমে কলামের মতো কলামে অনন্য মান গণনা করছেন?


100

আমার কাছে যদি এই জাতীয় একটি টেবিল থাকে:

df = pd.DataFrame({
         'hID': [101, 102, 103, 101, 102, 104, 105, 101],
         'dID': [10, 11, 12, 10, 11, 10, 12, 10],
         'uID': ['James', 'Henry', 'Abe', 'James', 'Henry', 'Brian', 'Claude', 'James'],
         'mID': ['A', 'B', 'A', 'B', 'A', 'A', 'A', 'C']
})

আমি count(distinct hID)কুলিকের সাথে অনন্য এইডের জন্য 5 টি গণনা নিয়ে আসতে পারি। আমি কীভাবে পাই্ডন ডেটাফ্রেম ব্যবহার করে অজগরটিতে এটি করব? অথবা একটি অদ্ভুত অ্যারে হতে পারে? একইভাবে, count(hID)আমি করতে চাইলে আমি কিলিকের মধ্যে 8 পেয়ে যাব। পান্ডে এটি করার সমতুল উপায় কী?


@ পাইরেস্কয়ার ধন্যবাদ। আমি df [['dID', 'hID']]। আগ্রাসন (['গণনা', 'আকার', 'নুনিক']) এর মতো কিছু করতে পারি এবং এটি কার্যকর হয়। কিন্তু গ্রুপবাইয়ের সাথে মিলিত হয়ে এটি কাজ করে না। সুতরাং df [['dID', 'hID']]। গ্রুপবাই ('mID') agg নির্দিষ্ট কলামগুলি নির্বাচন করার এবং শর্ত প্রয়োগ করার কোনও উপায় আছে?
আলহপা ডেল্টা

তিনটি উপায় df[['mID', 'dID','hID']].groupby('mID').agg(['count', 'size', 'nunique'])
পিয়েরস্কোয়ার্ড

বাdf[['dID','hID']].groupby(df['mID']).agg(['count', 'size', 'nunique'])
পাইরেস্কয়ার্ড

4
বাdf.groupby('mID')[['dID', 'hID']].agg(['count', 'size', 'nunique'])
পাইরেস্কোয়ার্ট

উত্তর:


180

স্বতন্ত্র মান গণনা করুন, ব্যবহার করুন nunique:

df['hID'].nunique()
5

কেবল নন-নাল মান গণনা করুন, ব্যবহার করুন count:

df['hID'].count()
8

নাল মান সহ মোট মান গণনা করুন, গুণাবলীটি ব্যবহার করুন size:

df['hID'].size
8

শর্ত যুক্ত করতে সম্পাদনা করুন

বুলিয়ান ইনডেক্সিং ব্যবহার করুন:

df.loc[df['mID']=='A','hID'].agg(['nunique','count','size'])

বা ব্যবহার query:

df.query('mID == "A"')['hID'].agg(['nunique','count','size'])

আউটপুট:

nunique    5
count      5
size       5
Name: hID, dtype: int64

ধন্যবাদ! আমরা কীভাবে একটি শর্ত যুক্ত করব? এমআইডি = 'এ' এর জন্য নুনিকের মতো?
আলহপা ডেল্টা

66

যদি আমি ধরে নিই যে ডেটা আপনার ডেটাফ্রেমের নাম, আপনি এটি করতে পারেন:

data['race'].value_counts()

এটি আপনাকে স্বতন্ত্র উপাদান এবং উপস্থিতিগুলির সংখ্যা প্রদর্শন করবে।


আপনি যদি প্রতিটি অনন্য আইটেমের অনুপাত চান তবে আপনি এটিও করতে পারেন। data['race'].value_counts(normalize=True)
বোগাস

24

বা প্রতিটি কলামের জন্য অনন্য মানের সংখ্যা পান:

df.nunique()

dID    3
hID    5
mID    3
uID    5
dtype: int64

নতুন pandas 0.20.0 pd.DataFrame.agg

df.agg(['count', 'size', 'nunique'])

         dID  hID  mID  uID
count      8    8    8    8
size       8    8    8    8
nunique    3    5    3    5

আপনি সর্বদা একটি এর aggমধ্যে একটি করতে সক্ষম হয়েছেন groupby। আমি stackশেষে ব্যবহার করেছি কারণ আমার উপস্থাপনাটি ভাল like

df.groupby('mID').agg(['count', 'size', 'nunique']).stack()


             dID  hID  uID
mID                       
A   count      5    5    5
    size       5    5    5
    nunique    3    5    5
B   count      2    2    2
    size       2    2    2
    nunique    2    2    2
C   count      1    1    1
    size       1    1    1
    nunique    1    1    1

ধন্যবাদ! আমরা কীভাবে একটি শর্ত যুক্ত করব? এমআইডি = 'এ' এর জন্য নুনিকের মতো?
আলহপা ডেল্টা

@ আল্প্পাডেল্টা আমি শেষে কিছু যুক্ত করেছি। আশা করি এটি সহায়তা করে
পাইআরস্কয়ার্ড


0

কলামে অনন্য মান গণনা করতে, hIDডেটাফ্রেমের কথা বলুন df:

len(df.hID.unique())

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.