이번 포스팅에서는 Python pandas의 DataFrame, Series 의 행, 열의 개수를 세는 방법(how to count the number of rows and columns of pandas DataFrame and Series)을 소개하겠습니다. 

 

간단한 것들이고, 이미 소개한 것들이긴 한데요, Stackoverflow에 깔끔하게 유형별로 정리한 표가 있어서 옮겨보았습니다. 

 

Series 의 행 개수를 셀 때 s.size 와 같이 뒤에 () 가 없다는 것 조심해야 겠습니다.그리고 count()는 Null 값이 아닌 행(count Non-null rows)만 세며,

> size() 는 Null 값인 행도 모두 포함해서 행(size of all rows)을 센다

는 것도 유념하면 좋겠습니다. 

 

구분

pandas DataFrame (df)

pandas Series (s)

행 개수 세기

(row count)

len(df)

df.shape[0]

len(df.index)

len(s)

s.size

len(s.index)

열 개수 세기

(column count)

df.shape[1]

len(df.columns)

N/A

Null 값이 아닌 행 개수 세기

(Non-null row count)

df.count()

s.count()

그룹 별 행 개수 세기

(Row count per group)

df.groupby(...).size()

s.groupby(...).size()

그룹 별 Null 값이 아닌 행 개수 세기

(Non-null row count per group)

df.groupby(...).count()

s.groupby(...).count()

 

 

간단한 예제를 아래에 소개합니다. 

numpy와 pandas 라이브러리 불러오고, DataFrame과 Series 데이터셋 만들어보겠습니다. 

 

import numpy as np
import pandas as pd

df = pd.DataFrame({'grp': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'], 
                           'val': [1, 2, np.nan, 4, np.nannp.nan, 7, 8, 9]})

In [02]: df

Out[02]:

grp val

0 A 1.0

1 A 2.0

2 A NaN

3 B 4.0

4 B NaN

5 B NaN

6 C 7.0

7 C 8.0

8 C 9.0

 


s = pd.Series([1, 2, np.nan, 4, np.nannp.nan, 7, 8, 9])
In [03]: s

Out[03]:

0 1.0

1 2.0

2 NaN

3 4.0

4 NaN

5 NaN

6 7.0

7 8.0

8 9.0

dtype: float64

 


 

구분

DataFrame (df)

Series (s)

행의 개수 세기

(Row count)

In [04]: len(df)

Out[04]: 9

 

In [05]: df.shape[0]

Out[05]: 9

 

In [06]: len(df.index)

Out[06]: 9

In [08]: len(s)

Out[08]: 9

 

In [09]: s.size

Out[09]: 9

 

In [10]: len(s.index)

Out[10]: 9

열의 개수 세기

(Column count)

In [11]: df.shape[1]

Out[11]: 2

 

In [12]: len(df.columns)

Out[12]: 2

N/A

Null 이 아닌 행의 개수 세기

(Non-null row count, ignore NaNs)

In [13]: df.count()

Out[13]:

grp 9

val 6

dtype: int64

 

In [14]: df['val'].count()

Out[14]: 6

In [15]: s.count()

Out[15]: 6

그룹 별 행의 개수 세기

(Row count per group)

In [16]: df.groupby('grp').size()

Out[16]:

grp

A 3

B 3

C 3

dtype: int64

In [17]: s.groupby(df.grp).size()

Out[17]:

grp

A 3

B 3

C 3

dtype: int64

그룹별 Null 이 아닌 행의 개수 세기

(Non-null row count per group)

In [18]: df.groupby('grp').count()

Out[18]:

val

grp

A 2

B 1

C 3

In [19]: s.groupby(df.grp).count()

Out[19]:

grp

A 2

B 1

C 3

dtype: int64

 

많은 도움이 되었기를 바랍니다. 

728x90
반응형
Posted by Rfriend
,