강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

dlclxkzk87님의 프로필 이미지
dlclxkzk87

작성한 질문수

실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지

Pandas(판다스)에 대한 소개

DataFrame groupby 사용관련 질문

해결된 질문

작성

·

22

1

7:45 에서 해당 코드대로 아래와 같이 작성했는데 TypeError가 발생하였습니다.

grouped_by_city = df.groupby('City').mean()
print("\nGrouped by City:")
print(grouped_by_city)

에러 원인을 찾아보니 groupby().mean()을 수행할 때 숫자가 아닌 컬럼이 함께 포함되었기 때문이라 아래와 같이 작성해야 된다고 합니다.

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'Age': [25,30,35,40,45],
    'City' : ['New York','San Francisco', 'Los Angeles', 'Chicago', 'Houston'],
    'Salary' : [50000, 60000, 70000, 80000, 90000]
}

df = pd.DataFrame(data)

df['Experience'] = [2,5,8,10,12]
print("\nDataFrame after adding coulmn:")
print(df)

제가 data를 잘못 작성해서 이런 오류가 발생한 것일까요?

 

 

 

답변 2

0

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

안녕하세요 dlclxkzk87님,

결론부터 말하면 네, 코드가 틀렸다기보다는 groupby().mean()의 동작을 정확히 이해하지 못해서 생긴 오류예요. 아주 흔한 케이스고, 질문도 정확합니다. 문제는 문자열 컬럼(Name, City) 입니다.

mean()은 숫자형 컬럼에만 적용할 수 있는데, 예전 pandas 버전에서는 이걸 자동으로 무시했지만 최근 pandas 버전에서는 명시적으로 에러를 냅니다.

그래서 발생한 에러의 정체는 문자열 컬럼에 평균을 낼 수 없다 입니다

아마 grouped_by_city = df.groupby('City').mean(numeric_only=True) 하시면 괜찮을 겁니다.

dlclxkzk87님의 프로필 이미지
dlclxkzk87
질문자

감사합니다 😃

0

안녕하세요, 인프런 AI 인턴입니다. dlclxkzk87님.

DataFrame의 groupbymean 메소드를 사용할 때 발생한 에러에 대해 고민하고 계시군요. groupby 메소드와 그 후 메소드 체이닝을 통해 데이터를 분석할 때, 범주형 데이터와 수치형 데이터의 구분은 매우 중요합니다.

문제 설명

groupby('City').mean() 수행 시 문제의 원인은 City 외에 그룹화 대상이나 평균을 계산할 수 없는(즉, 숫자가 아닌) 데이터를 포함하고 있는 경우입니다. 기본적으로 mean() 함수는 수치 연산에 적합한 컬럼에서만 작동되므로, 수치형 데이터가 아닌 경우 에러가 발생할 수 있습니다.

해결 방안

  1. 수치형 컬럼만 선택하여 groupby를 수행하면 문제를 해결할 수 있습니다. 예를 들어, SalaryExperience 만을 평균 내고자 하는 경우:
   grouped_by_city = df.groupby('City')[['Salary', 'Experience']].mean()
   print("\nGrouped by City (Salary and Experience):")
   print(grouped_by_city)

위 방법들을 통해 수치형 데이터를 정확히 그룹화하고 평균을 계산할 수 있습니다. 추가로, 코드를 작성하실 때 데이터 타입을 고려해 연산을 수행하면 오류를 줄일 수 있습니다.

관련된 기존 답변을 참고할 시 비슷한 문제 상황을 이해하고 해결할 수 있습니다. 다음 링크에서 자세한 정보를 제공합니다.
- DataFrame groupby 문제 해결 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dlclxkzk87님의 프로필 이미지
dlclxkzk87

작성한 질문수

질문하기