Panda DataFrame'in satır sayısını nasıl alabilirim?
Bu tablo, önerilen yöntemlerle birlikte bir DataFrame'de (veya tamlık için Seride) bir şey saymak istediğiniz farklı durumları özetler.
Dipnotlar
DataFrame.count
Series
null olmayan sayım sütuna göre değiştiğinden her sütun için sayıları döndürür .
DataFrameGroupBy.size
Series
aynı gruptaki tüm sütunlar aynı satır sayısını paylaştığından, a değerini döndürür .
DataFrameGroupBy.count
DataFrame
null olmayan sayım aynı gruptaki sütunlar arasında farklılık gösterebileceğinden a değerini döndürür . Belirli bir sütun için grup bazında null olmayan sayımı elde etmek için, df.groupby(...)['x'].count()
burada "x" sayılacak sütundur.
Minimum Kod Örnekleri
Aşağıda, yukarıdaki tabloda açıklanan yöntemlerin her birinin örneklerini göstereceğim. İlk olarak, kurulum -
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
Bir DataFrame Satır sayısı: len(df)
, df.shape[0]
ya dalen(df.index)
len(df)
# 5
df.shape[0]
# 5
len(df.index)
# 5
Sabit zaman operasyonlarının performansını karşılaştırmak aptalca gözüküyor, özellikle de fark "ciddi olarak endişelenme" seviyesindeyken. Ama bu diğer cevaplarla bir eğilim gibi gözüküyor, bu yüzden aynısını tamlık için yapıyorum.
Yukarıdaki 3 yöntemden len(df.index)
(diğer cevaplarda belirtildiği gibi) en hızlı olanıdır.
Not
- Yukarıdaki tüm yöntemler, basit özellik aramaları oldukları için sabit zamanlı işlemlerdir.
df.shape
(benzeri ndarray.shape
), bir demet döndüren bir özelliktir (# Rows, # Cols)
. Örneğin, buradaki örnek için df.shape
döner (8,
2)
.
Sütun bir DataFrame arasında Sayısı: df.shape[1]
,len(df.columns)
df.shape[1]
# 2
len(df.columns)
# 2
Buna benzer olarak len(df.index)
, len(df.columns)
iki yöntemin daha hızlıdır (ancak yazmak için daha fazla karakter alır).
Satır Bir Seri Sayısı: len(s)
, s.size
,len(s.index)
len(s)
# 5
s.size
# 5
len(s.index)
# 5
s.size
ve len(s.index)
hız açısından hemen hemen aynı. Ama tavsiye ederim len(df)
.
Not
size
bir özniteliktir ve öğe sayısını döndürür (= herhangi bir Seri için satır sayısı). DataFrames, aynı sonucu döndüren bir boyut niteliği de tanımlar df.shape[0] * df.shape[1]
.
Null Olmayan Satır Sayısı: DataFrame.count
veSeries.count
Burada açıklanan yöntemler sadece null olmayan değerleri sayar (yani NaN'ler dikkate alınmaz).
Aramak DataFrame.count
, her sütun için NaN olmayan sayılar döndürür :
df.count()
A 5
B 3
dtype: int64
Seriler Series.count
için benzer etkiyi kullanın :
s.count()
# 3
Grup bazında Satır Sayısı: GroupBy.size
İçin DataFrames
, DataFrameGroupBy.size
grup başına satır sayısını saymak için kullanın .
df.groupby('A').size()
A
a 2
b 2
c 1
dtype: int64
Benzer şekilde, Series
kullanacaksınız SeriesGroupBy.size
.
s.groupby(df.A).size()
A
a 2
b 2
c 1
Name: B, dtype: int64
Her iki durumda da a Series
döndürülür. DataFrames
Tüm gruplar aynı satır sayısını paylaştığından bu da mantıklıdır .
Grup olarak Null Olmayan Satır Sayısı: GroupBy.count
Yukarıdakine benzer, ancak kullanın GroupBy.count
, değil GroupBy.size
. Not size
her zaman döndürür Series
iken count
döner bir Series
belirli bir sütunda ya da başka a çağrıda eğer DataFrame
.
Aşağıdaki yöntemler aynı şeyi döndürür:
df.groupby('A')['B'].size()
df.groupby('A').size()
A
a 2
b 2
c 1
Name: B, dtype: int64
Bu arada, için count
, elimizdeki
df.groupby('A').count()
B
A
a 2
b 1
c 0
... tüm GroupBy nesnesine çağrıldı, v / s,
df.groupby('A')['B'].count()
A
a 2
b 1
c 0
Name: B, dtype: int64
Belirli bir sütunda çağrılır.