পান্ডের মধ্যে groupby("x").count
ও পার্থক্য groupby("x").size
কি?
আকার কি শূন্য বাদ দেয়?
পান্ডের মধ্যে groupby("x").count
ও পার্থক্য groupby("x").size
কি?
আকার কি শূন্য বাদ দেয়?
NaN
মান সহ বা বাদ দিয়ে চলেছে , এটি অবশ্যই একটি গৌণ বিষয় noted একাধিক সিরিজের সাথে ডেটা ফ্রেমের আউটপুট df.groupby('key').size()
এবং তুলনা করুন df.groupby('key').count()
। পার্থক্যটি সুস্পষ্ট: count
অন্য কোনও সামগ্রিক ফাংশন ( mean
, max
...) এর মতো কাজ করে size
তবে গোষ্ঠীতে সূচী প্রবেশের সংখ্যা পাওয়ার জন্য নির্দিষ্ট, এবং তাই কলামের মানগুলিতে এই ফাংশনের জন্য অর্থহীন নয়। সঠিক ব্যাখ্যার জন্য @ সিএস 95 উত্তর দেখুন ।
উত্তর:
size
NaN
মান অন্তর্ভুক্ত , count
না:
In [46]:
df = pd.DataFrame({'a':[0,0,1,2,2,2], 'b':[1,2,3,4,np.NaN,4], 'c':np.random.randn(6)})
df
Out[46]:
a b c
0 0 1 1.067627
1 0 2 0.554691
2 1 3 0.458084
3 2 4 0.426635
4 2 NaN -2.238091
5 2 4 1.256943
In [48]:
print(df.groupby(['a'])['b'].count())
print(df.groupby(['a'])['b'].size())
a
0 2
1 1
2 2
Name: b, dtype: int64
a
0 2
1 1
2 3
dtype: int64
পান্ডায় আকার এবং গণনার মধ্যে পার্থক্য কী?
অন্যান্য উত্তরগুলি পার্থক্যটি নির্দেশ করেছে, তবে, " এনএএন-র গণনা করা হয় না" বলা সম্পূর্ণ নির্ভুল নয়। যদিও প্রকৃতপক্ষে Nans গণনা করে, আসলে এই সত্য যে একটি ফল আয় আকার বস্তুর (বা দৈর্ঘ্য) এটা বলা হয়। স্বাভাবিকভাবেই, এর মধ্যে রয়েছে সারি / মানগুলি যা NaN।size
count
size
size
সুতরাং, সংক্ষেপে size
বলতে গেলে, সিরিজ / ডেটা ফ্রেম 1 এর আকার প্রদান করে ,
df = pd.DataFrame({'A': ['x', 'y', np.nan, 'z']})
df
A
0 x
1 y
2 NaN
3 z
df.A.size
# 4
... count
নন-এনএন মানগুলি গণনা করার সময় :
df.A.count()
# 3
লক্ষ করুন যে, size
একটি বৈশিষ্ট্য আছে (হিসাবে একই ফলাফল দেয় len(df)
বা len(df.A)
)। count
একটি ফাংশন।
১. DataFrame.size
এছাড়াও একটি বৈশিষ্ট্য এবং ডেটাফ্রেমে উপাদানগুলির সংখ্যা (সারি x কলাম) প্রদান করে।
GroupBy
- আউটপুট কাঠামোবেসিক পার্থক্য ছাড়াও, GroupBy.size()
বনাম কল করার সময় উত্পন্ন আউটপুটটির কাঠামোর মধ্যেও পার্থক্য রয়েছে GroupBy.count()
।
df = pd.DataFrame({'A': list('aaabbccc'), 'B': ['x', 'x', np.nan, np.nan, np.nan, np.nan, 'x', 'x']})
df
A B
0 a x
1 a x
2 a NaN
3 b NaN
4 b NaN
5 c NaN
6 c x
7 c x
বিবেচনা,
df.groupby('A').size()
A
a 3
b 2
c 3
dtype: int64
বনাম,
df.groupby('A').count()
B
A
a 2
b 0
c 2
GroupBy.count
আপনি যখন count
সমস্ত কলামে কল করবেন তখন ডেটাফ্রেম ফেরত দেয় , যখন GroupBy.size
কোনও সিরিজ দেয়।
কারণটি হ'ল size
সমস্ত কলামের ক্ষেত্রে একই, সুতরাং কেবলমাত্র একটি ফলাফল পাওয়া যায়। এদিকে, count
প্রতিটি কলামের জন্য ডেকে আনা হয়েছে, কারণ ফলাফলগুলি প্রতিটি কলামে কতটি এনএএন রয়েছে তার উপর নির্ভর করবে।
pivot_table
আর একটি উদাহরণ pivot_table
কীভাবে এই ডেটা ব্যবহার করে। মনে করুন আমরা ক্রস ট্যাবুলেশন গণনা করতে চাই
df
A B
0 0 1
1 0 1
2 1 2
3 0 2
4 0 0
pd.crosstab(df.A, df.B) # Result we expect, but with `pivot_table`.
B 0 1 2
A
0 1 2 1
1 0 0 1
সহ pivot_table
, আপনি ইস্যু করতে পারেন size
:
df.pivot_table(index='A', columns='B', aggfunc='size', fill_value=0)
B 0 1 2
A
0 1 2 1
1 0 0 1
কিন্তু count
কাজ করে না; একটি খালি ডেটাফ্রেম ফিরে আসে:
df.pivot_table(index='A', columns='B', aggfunc='count')
Empty DataFrame
Columns: []
Index: [0, 1]
আমি বিশ্বাস করি এর কারণ 'count'
হ'ল তর্কটি প্রেরণ করা সিরিজটি অবশ্যই করা উচিত values
এবং যখন কিছুই পাস করা হয় না তখন পান্ডারা কোনও অনুমান করার সিদ্ধান্ত নেয়।
@ এডচামের উত্তরে কেবল কিছুটা যুক্ত করতে, যদিও ডেটাতে কোনও এনএ মান নেই, তার আগে উদাহরণটি ব্যবহার করে গণনা () এর ফলাফল আরও ভার্বোস হয়:
grouped = df.groupby('a')
grouped.count()
Out[197]:
b c
a
0 2 2
1 1 1
2 2 3
grouped.size()
Out[198]:
a
0 2
1 1
2 3
dtype: int64
size
সমান সমান বলে মনে হয় count
।
যখন আমরা সাধারণ ডেটাফ্রেমগুলি নিয়ে কাজ করি তখন কেবল পার্থক্যটি এনএএন মানগুলির অন্তর্ভুক্তি হতে পারে, মানে সারিগুলি গণনা করার সময় গণনাটি এনএন মানগুলিকে অন্তর্ভুক্ত করে না।
তবে আমরা যদি groupby
তখনকার সাথে এই ফাংশনগুলি ব্যবহার করে count()
থাকি , সঠিক ফলাফল পেতে আমাদের কোনও সংখ্যার ক্ষেত্রের সাথে সংযুক্ত groupby
করতে হবে যেখানে size()
এই ধরণের সংঘবদ্ধতার প্রয়োজন নেই এমন গ্রুপগুলির সঠিক সংখ্যাটি পেতে ।
উপরের সমস্ত উত্তর ছাড়াও, আমি আরও একটি স্বরূপ উল্লেখ করতে চাই যা আমি উল্লেখযোগ্য বলে মনে করি।
আপনি পান্ডার Datarame
আকারের সাথে সম্পর্কিত করতে পারেন এবং জাভার Vectors
আকার এবং দৈর্ঘ্যের সাথে গণনা করতে পারেন । যখন আমরা ভেক্টর তৈরি করি তখন এর জন্য কিছু পূর্বনির্ধারিত মেমরি বরাদ্দ করা হয়। উপাদান যুক্ত করার সময় আমরা যখন এটি ধারণ করতে পারে এমন সংখ্যার কাছাকাছি পৌঁছে যায়, তখন আরও মেমরি বরাদ্দ করা হয়। একইভাবে, DataFrame
আমরা উপাদানগুলি যুক্ত করার সাথে সাথে এটিকে বরাদ্দ করা মেমরিটি বৃদ্ধি পায়।
আকার বৈশিষ্ট্য বরাদ্দকৃত মেমরি সেলকে DataFrame
সংখ্যা দেয় যেখানে গণনা প্রকৃতপক্ষে উপস্থিত উপাদানগুলির সংখ্যা দেয় DataFrame
। উদাহরণ স্বরূপ,
আপনি দেখতে পাচ্ছেন যে সেখানে 3 টি সারি রয়েছে DataFrame
, এর আকার 6।
এই উত্তরটি আকার এবং গণ্য পার্থক্যকে সম্মান করে DataFrame
এবং না coversেকে দেয় Pandas Series
। কি হয় তা আমি পরীক্ষা করে দেখিনিSeries