inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

5분빨리 퇴근하자! 파이썬 데이터 분석, 시각화, 웹 대시보드 제작하기

Pandas의 꽃, 그룹연산 groupby 메서드

groupby 경고 질문

해결된 질문

1409

TEW_교육관리자

작성한 질문수 6

0

groupby를 사용하면 에러는 아니고 경고가 뜹니다.

FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.


chatGPT:

이 경고는 Pandas의 value_counts() 메서드를 사용할 때 발생하는 것으로 보입니다. 이 경고는 현재 버전의 Pandas에서는 observed 매개변수의 기본값이 False이지만, 향후 버전에서는 True로 변경될 것이라는 것을 알려주는 것입니다. 즉, 향후에는 observed=False를 명시적으로 지정하지 않으면 경고가 표시될 것입니다.

이러한 경고를 피하려면 value_counts()를 호출할 때 observed=False를 명시적으로 전달하면 됩니다. 예를 들어:

import pandas as pd

# 예제 데이터프레임 생성
df = pd.DataFrame({'Category': ['A', 'B', 'A', 'C', 'B', 'A']})

# value_counts() 호출 시 observed 매개변수 명시
counts = df['Category'].value_counts(observed=False)

print(counts)

이렇게 하면 경고가 발생하지 않습니다. 하지만 향후 Pandas 버전에서는 이러한 변경이 기본 동작이 되므로 observed 매개변수를 사용하여 코드를 업데이트하는 것이 좋습니다.


-> 근데 이게 무슨 말인지 모르겠습니다!

뭐... 대충 업데이트 할 건데, 오류가 생길 수 있으니 미리 대비를 해라~ 이런 거 같은데 정확히 무슨 뜻인지 모르겠습니다!

python pandas seaborn plotly matplotlib data-visualization streamlit

답변 1

0

박가네 데이터랩

안녕하세요.

Pandas groupby 메서드를 사용할 때 질문주신 것과 같이 observed 관련 warning이 뜨는 것은 챗 GPT가 설명해 준 것과 같이 후속 Pandas 버전에서는 observed 인자의 값이 True가 기본값이 된다는 뜻입니다. ^^

 

범주형 변수를 groupby 메서드로 그룹화 할 때 observed 인자 값이 True이면 관측되는 데이터들만 표시해 주고, False이면 관측되지 않더라도 결과에 포함하여 나타내 주게 됩니다. 아래 예시 코드 블럭을 참고해 보시기 바랍니다. observed가 False일 경우 state가 AK, gender가 F인 경우도 0이라는 값으로 결과를 나타내 주지만, True일 경우 그렇지 않은 것을 볼 수 있습니다.

 

In [16]: df.groupby(["state", "gender"], observed=False).count().fillna(0)["name"].astype(int)
Out[16]:
state  gender
AK     F         0
       M         2
AL     F         1
       M         1
Name: name, dtype: int64

In [17]: df.groupby(["state", "gender"], observed=True).count()["name"]
Out[17]:
state  gender
AK     M         2
AL     M         1
       F         1
Name: name, dtype: int64

 

위 예시는 아래 stackoverflow에서 가져온 것이니 링크를 참고해 보시면 좋을 것 같습니다 ^^

https://stackoverflow.com/questions/57385009/pandas-groupby-observed-parameter-with-multiple-categoricals

0

TEW_교육관리자

그래서 그게 무슨 뜻인거에요?

observed 를 false로 설정하는 게 더 좋다는 건가요?

1

박가네 데이터랩

미래에 버전 업데이트 시 오류가 생긴다는 뜻은 아니고, observed인자의 기본 값이 False에서 True 로 변경될 예정이니 주의하라는 뜻입니다. 필요에 따라 아래처럼 대처하시면 될 것 같습니다.

 

코드의 결과에서 관측되지 않은 값들을 꼭 표시해야 할 경우에는 False 로 설정하시기 바랍니다.

(위 예시 코드처럼 관측되지 않은 값의 groupby count 결과도 0으로 표시되어야 하는 경우)

 

이외의 경우에는 기본값으로 사용하시기 바랍니다 (observed 인자를 따로 False나 True로 전달하지 않고). observed 인자를 매 번 전달하면 번거로움과 코드의 복잡성 증가 문제가 있기 때문입니다.

이렇게 하면 버전 업데이트가 되기 전까지 지금처럼 계속해서 경고 메시지가 뜰텐데, 이 때는 아래처럼 경고 메시지를 뜨지 않게 하는 코드를 맨 앞에 추가하는 방법도 있습니다.

import warnings
warnings.filterwarnings(action='ignore')

강의 자료를 어디서 확인 할 수 있나요?

1

10

2

FRED API

0

15

0

캐글 제출 점수

0

8

1

VCP 시그널 상태 추가 스크립트 에서 return_pct 조건

0

15

2

캐쉬가 업데이트 안됩니다.

0

13

2

기출 마무리 방법

0

24

1

제가 AWS 에 배포했는데

1

17

1

빅이시 작업형2 기초 - 케이스 1~3 관련 문의

0

13

1

갑자기 stock_prediction은 어디서 발생한건가요?

1

21

2

pipeline/run-buy-pipeline 실행시 "LLM호출전체실패"에러발생

1

18

2

데이터프레임 슬라이싱 인덱싱 질문2

0

17

2

SSL 발급할때 HTTP로 진행하는 이유가 궁금합니다.

0

14

2

단일표본검정, 샤피로검정, 윌콕슨검정

0

26

2

강의자료 다운로드 여부

0

29

2

2-14.\x02 안보임 관련

0

16

0

문제에 첨부된 예시와 실제 출력된 샘플 비교

0

23

2

원핫 인코딩 관련

0

32

2

오늘 처음으로 자동매매가

1

32

2

data download 문의

1

173

3

filter, rename axis 기본값

0

160

1

학습 데이터 다운로드 경로 문의드립니다

0

260

1

button과 checkbox 조건문과 함수

0

303

1

annot 수치 표현

0

347

1

print()

0

287

1