팬더 DataFrame의 행 수를 어떻게 얻습니까?
이 표에는 권장 방법과 함께 DataFrame (또는 Series)에서 무언가를 계산하려는 다양한 상황이 요약되어 있습니다.
각주
DataFrame.count
Series
널이 아닌 수는 열마다 다르기 때문에 각 열의 수를 a로 리턴합니다 .
DataFrameGroupBy.size
Series
같은 그룹의 모든 열이 같은 행 수를 공유하기 때문에를 반환합니다 .
DataFrameGroupBy.count
DataFrame
null이 아닌 개수는 같은 그룹의 열마다 다를 수 있으므로를 반환합니다 . 특정 열에 대해 그룹 별 Null이 아닌 개수를 얻으려면 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
는 속성이며 요소 수 (= Series의 행 수)를 반환합니다. DataFrames는와 동일한 결과를 반환하는 size 속성도 정의합니다 df.shape[0] * df.shape[1]
.
널이 아닌 행 수 : DataFrame.count
및Series.count
여기에 설명 된 방법은 null이 아닌 값만 계산합니다 (NaN은 무시 됨).
호출 DataFrame.count
하면 각 열에 대해 NaN 이외의 개수가 반환 됩니다.
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
두 경우 모두 a Series
가 반환됩니다. DataFrames
모든 그룹이 동일한 행 수를 공유하기 때문에 이것은 또한 의미가 있습니다.
그룹 별 Null이 아닌 행 수 : 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
... 전체 GroupBy 객체 v / s에서 호출
df.groupby('A')['B'].count()
A
a 2
b 1
c 0
Name: B, dtype: int64
특정 열에서 호출됩니다.