আমি কীভাবে একটি পান্ডাস ডেটা ফ্রেমের সারি গণনা পেতে পারি?
এই সারণীটি প্রস্তাবিত পদ্ধতি (গুলি) সহ আপনি যে কোনও পরিস্থিতিতে ডেটাফ্রেমে (বা সিরিজ, সম্পূর্ণতার জন্য) কিছু গণনা করতে চান তাতে সংক্ষিপ্তসার রয়েছে।
পাদটিকা
DataFrame.count
প্রতিটি কলামের জন্য একটি হিসাবে Series
গণনা করে কারণ নন-নাল গণনা কলাম অনুসারে পরিবর্তিত হয়।
DataFrameGroupBy.size
একটি ফেরৎ Series
একই গ্রুপ ভাগ সব কলাম একই সারিতে গোনা গেছে।
DataFrameGroupBy.count
একটি ফেরত দেয় DataFrame
, যেহেতু নন-নাল গণনা একই গ্রুপের কলামগুলিতে পৃথক হতে পারে। নির্দিষ্ট কলামের জন্য গ্রুপ-ভিত্তিক নন-নাল গণনা পেতে, df.groupby(...)['x'].count()
"x" গণনা করার জন্য কলামটি যেখানে ব্যবহার করুন ।
ন্যূনতম কোড উদাহরণ
নীচে, আমি উপরের সারণীতে বর্ণিত প্রতিটি পদ্ধতির উদাহরণ দেখাই। প্রথমে সেটআপ -
df = pd.DataFrame({
'A': list('aabbc'), 'B': ['x', 'x', np.nan, 'x', np.nan]})
s = df['B'].copy()
df
A B
0 a x
1 a x
2 b NaN
3 b x
4 c NaN
s
0 x
1 x
2 NaN
3 x
4 NaN
Name: B, dtype: object
একটি DataFrame এর সারি গণনা: len(df)
, df.shape[0]
, অথবাlen(df.index)
len(df)
# 5
df.shape[0]
# 5
len(df.index)
# 5
ধ্রুবক সময় ক্রিয়াকলাপগুলির পারফরম্যান্সের তুলনা করা নির্বোধ বলে মনে হয়, বিশেষত যখন পার্থক্যটি "গুরুত্ব সহকারে, এটি নিয়ে চিন্তা করবেন না" এর স্তরে থাকে। তবে এটি অন্যান্য উত্তরগুলির সাথে একটি প্রবণতা বলে মনে হচ্ছে, তাই আমি সম্পূর্ণতার জন্য একই করছি।
উপরের 3 টি পদ্ধতির len(df.index)
মধ্যে (অন্যান্য উত্তরে উল্লিখিত) দ্রুততম।
বিঃদ্রঃ
- উপরের সমস্ত পদ্ধতি হ'ল ধ্রুবক সময় ক্রিয়াকলাপ কারণ এগুলি সাধারণ বৈশিষ্ট্যযুক্ত অনুসন্ধান।
df.shape
(অনুরূপ ndarray.shape
) এমন একটি বৈশিষ্ট্য যা এর দ্বিগুণ দেয় (# Rows, # Cols)
। উদাহরণস্বরূপ, উদাহরণের জন্য এখানে df.shape
ফিরে আসে (8,
2)
।
কলামটি একটি DataFrame এর গণনা: df.shape[1]
,len(df.columns)
df.shape[1]
# 2
len(df.columns)
# 2
অনুরূপ len(df.index)
, len(df.columns)
দুটি পদ্ধতির দ্রুত (তবে টাইপ করতে আরও অক্ষর লাগে)।
সারি ধারাবাহিক গণনা: len(s)
, s.size
,len(s.index)
len(s)
# 5
s.size
# 5
len(s.index)
# 5
s.size
এবং len(s.index)
গতির দিক থেকে প্রায় একই। তবে আমি সুপারিশ len(df)
।
নোটটি
size
একটি বৈশিষ্ট্য, এবং এটি উপাদানগুলির সংখ্যা (যে কোনও সিরিজের জন্য = সারি সংখ্যা) প্রদান করে। ডেটাফ্রেমগুলি একটি আকারের বৈশিষ্ট্যও সংজ্ঞায়িত করে যা একই ফলাফল হিসাবে দেয় df.shape[0] * df.shape[1]
।
নন-নাল সারি গণনা: DataFrame.count
এবংSeries.count
এখানে বর্ণিত পদ্ধতিগুলি কেবল নন-নাল মান গণনা করে (যার অর্থ NaNs উপেক্ষা করা হয়)।
কলিং প্রতিটি কলামের DataFrame.count
জন্য নন-নন গণনাগুলি ফিরিয়ে দেবে :
df.count()
A 5
B 3
dtype: int64
সিরিজের জন্য, Series.count
অনুরূপ প্রভাব ব্যবহার করুন :
s.count()
# 3
গোষ্ঠীভিত্তিক সারি গণনা: GroupBy.size
জন্য DataFrames
, DataFrameGroupBy.size
প্রতি গ্রুপে সারি সংখ্যা গণনা ব্যবহার করুন ।
df.groupby('A').size()
A
a 2
b 2
c 1
dtype: int64
একইভাবে, এর জন্য Series
, আপনি ব্যবহার করবেন SeriesGroupBy.size
।
s.groupby(df.A).size()
A
a 2
b 2
c 1
Name: B, dtype: int64
উভয় ক্ষেত্রে, Series
একজনকে ফেরত দেওয়া হয়। এই জন্য জ্ঞান করে তোলে DataFrames
পাশাপাশি যেহেতু সব গ্রুপ একই সারিতে গোনা শেয়ার করুন।
গ্রুপ-ভিত্তিক নন-নাল সারি গণনা: GroupBy.count
উপরে অনুরূপ, কিন্তু ব্যবহার GroupBy.count
, না GroupBy.size
। লক্ষ্য করুন size
সবসময় একটি ফেরৎ Series
, যখন count
আয় একটি Series
একটি নির্দিষ্ট কলাম, বা অন্য একটি আহ্বান DataFrame
।
নিম্নলিখিত পদ্ধতিগুলি একই জিনিসটি ফেরত দেয়:
df.groupby('A')['B'].size()
df.groupby('A').size()
A
a 2
b 2
c 1
Name: B, dtype: int64
এদিকে, জন্য count
, আমাদের আছে
df.groupby('A').count()
B
A
a 2
b 1
c 0
... পুরো গ্রুপ বাই অবজেক্টে কল করা হয়েছে, v / s,
df.groupby('A')['B'].count()
A
a 2
b 1
c 0
Name: B, dtype: int64
নির্দিষ্ট কলামে ডাকা হয়।