programing

판다의 크기와 개수의 차이는 무엇입니까?

css3 2023. 7. 19. 21:30

판다의 크기와 개수의 차이는 무엇입니까?

그것이 사이의 차이점입니다.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

...하는 동안에countNaN이 아닌 값을 카운트합니다.

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'DataFrameJava를 및 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