판다의 크기와 개수의 차이는 무엇입니까?
그것이 사이의 차이점입니다.groupby("x").count
그리고.groupby("x").size
판다에서?
사이즈는 0만 제외하나요?
size
포함NaN
값, 그렇지 않음:
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
판다의 크기와 개수의 차이는 무엇입니까?
다른 답변들은 차이를 지적했지만, "라고 말하는 것은 완전히 정확하지 않습니다.size
동안 NaNs를 카운트합니다.count
그렇지 않습니다."하는 동안에size
는 실제로 NaNs를 계산하며, 이는 실제로 호출된 개체의 크기(또는 길이)를 반환하는 사실의 결과입니다.당연히 여기에는 NaN인 행/값도 포함됩니다.
그래서, 요약하자면,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
NaN이 아닌 값을 카운트합니다.
df.A.count()
# 3
주의:size
는 속성입니다(같은 결과를 나타냄).len(df)
또는len(df.A)
).count
는 함수입니다.
1. 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
각 열의 NaN 수에 따라 결과가 달라지기 때문에 각 열에 대해 호출됩니다.
사용 동작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
작동하지 않습니다. 빈 DataFrame이 반환됩니다.
df.pivot_table(index='A', columns='B', aggfunc='count')
Empty DataFrame
Columns: []
Index: [0, 1]
그 이유는'count'
다음으로 전달되는 시리즈에서 수행되어야 합니다.values
논쟁, 그리고 아무것도 통과되지 않았을 때, 판다들은 어떠한 가정도 하지 않기로 결정합니다.
@Edchum의 답변에 조금 더 덧붙이자면, 데이터에 NA 값이 없더라도 count()의 결과는 앞의 예를 사용하여 더 장황합니다.
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
일반적인 데이터 프레임을 처리할 때는 NAN 값만 포함됩니다. 즉, 행을 계산하는 동안 카운트에 NAN 값이 포함되지 않습니다.
그러나 이러한 기능을 사용할 경우groupby
그런 다음, 정확한 결과를 얻기 위해count()
우리는 모든 숫자 필드를 다음과 연관시켜야 합니다.groupby
에서 정확한 그수 습있어 까니에 디면?size()
이러한 유형의 연결은 필요하지 않습니다.
위의 모든 답변 외에도, 저는 제가 중요하다고 생각하는 한 가지 차이점을 더 지적하고 싶습니다.
상관 관계를 분석할 수 있습니다.pandas
'DataFrame
Java를 및 Vectors
때 됩니다.벡터를 만들 때 미리 정의된 메모리가 할당됩니다.최대 요소 수에 가까워지면 추가 추가 사항을 수용하기 위해 더 많은 메모리가 할당됩니다. 가지로찬에서.DataFrame
요소를 추가하면 할당된 메모리가 증가합니다.
그size
를 속은할 수제 공합다에 할당합니다.DataFrame
에 반에면.count
는 에실 존로요수 제공다니에 .DataFrame
예를 들면,
당신은 3개의 행이 있음에도 불구하고 그것을 볼 수 있습니다.DataFrame
크기는 6입니다.
이 답변은 크기 및 개수 차이에 대해 설명합니다.DataFrame
그리고 아닌pandas
Series
에서 어떤 일이 발생하는지 확인하지 않았습니다.Series
.
언급URL : https://stackoverflow.com/questions/33346591/what-is-the-difference-between-size-and-count-in-pandas
'programing' 카테고리의 다른 글
스프링 부츠는 "템플릿"을 제공합니다.입력 예외:jar에서 실행할 때 "템플릿 확인 중 오류 발생" (0) | 2023.07.19 |
---|---|
애플리케이션에서 개인 API 키를 저장하고 보호하는 모범 사례 (0) | 2023.07.19 |
'__o' 이름이 현재 컨텍스트에 없습니다. (0) | 2023.07.19 |
유형 오류: 'str' 및 'int' 개체를 연결할 수 없습니다. (0) | 2023.07.19 |
데이터 프레임 문자열 열에 결측값이 있는 경우 소문자를 지정하는 방법은 무엇입니까? (0) | 2023.07.19 |