DataFrame groupby 사용관련 질문
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를 잘못 작성해서 이런 오류가 발생한 것일까요?
Answer 2
0
안녕하세요 dlclxkzk87님,
결론부터 말하면 네, 코드가 틀렸다기보다는 groupby().mean()의 동작을 정확히 이해하지 못해서 생긴 오류예요. 아주 흔한 케이스고, 질문도 정확합니다. 문제는 문자열 컬럼(Name, City) 입니다.
mean()은 숫자형 컬럼에만 적용할 수 있는데, 예전 pandas 버전에서는 이걸 자동으로 무시했지만 최근 pandas 버전에서는 명시적으로 에러를 냅니다.
그래서 발생한 에러의 정체는 문자열 컬럼에 평균을 낼 수 없다 입니다
아마 grouped_by_city = df.groupby('City').mean(numeric_only=True) 하시면 괜찮을 겁니다.
0
안녕하세요, 인프런 AI 인턴입니다. dlclxkzk87님.
DataFrame의 groupby와 mean 메소드를 사용할 때 발생한 에러에 대해 고민하고 계시군요. groupby 메소드와 그 후 메소드 체이닝을 통해 데이터를 분석할 때, 범주형 데이터와 수치형 데이터의 구분은 매우 중요합니다.
문제 설명
groupby('City').mean() 수행 시 문제의 원인은 City 외에 그룹화 대상이나 평균을 계산할 수 없는(즉, 숫자가 아닌) 데이터를 포함하고 있는 경우입니다. 기본적으로 mean() 함수는 수치 연산에 적합한 컬럼에서만 작동되므로, 수치형 데이터가 아닌 경우 에러가 발생할 수 있습니다.
해결 방안
- 수치형 컬럼만 선택하여
groupby를 수행하면 문제를 해결할 수 있습니다. 예를 들어,Salary와Experience만을 평균 내고자 하는 경우:
grouped_by_city = df.groupby('City')[['Salary', 'Experience']].mean()
print("\nGrouped by City (Salary and Experience):")
print(grouped_by_city)
위 방법들을 통해 수치형 데이터를 정확히 그룹화하고 평균을 계산할 수 있습니다. 추가로, 코드를 작성하실 때 데이터 타입을 고려해 연산을 수행하면 오류를 줄일 수 있습니다.
관련된 기존 답변을 참고할 시 비슷한 문제 상황을 이해하고 해결할 수 있습니다. 다음 링크에서 자세한 정보를 제공합니다.
- DataFrame groupby 문제 해결 방법
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가
2
59
3
html 읽기 오류
1
89
2
pylint shell 사용법
0
71
2
자막오류 수정가능한가요?
0
79
1
복합 조건절 관련 궁금증
0
79
2
49.행맨 프로그램 - 재시도 횟수 관련.
1
76
1
64. 파이썬 입문자가 쉽게 빠지기 쉬운 몇가지 에러(혹은 로직)에 대해 알아보기
0
103
2
Replit UI가 업데이트 되서 강의 진행이 멈췄어요
2
178
3
Replit을 사용해보려고 하는데 영상처럼 진행이 안되네요
3
404
2
실무에서의 제네레이터 함수 사용에 관한 질문입니다.
0
64
2
영상이 소리만 나오고 영상은 안보입니다.
0
85
2
pandas 오류 질문
0
125
2
상속 질문
1
132
2
total을 float으로 바꾸신 이유
0
200
2
섹션2 ["환경 vs. 설정 vs. 구성"] 강의 자막 문의
0
141
1
파이썬 data insert to table
0
221
2
파이썬 Class Method 질문
0
154
2
timeit 쓸 때는 만들었던 함수를 재사용 할 수는 없는지?
0
131
2
__repr__ 와 __str__ 차이점?
0
204
2
class method vs static method
0
270
2
Type hint 문법의 Type Checking이 강제성이 있는지?
0
164
2
클래스 접근자 강의 복습부분 0:47에 오타가 있네요
0
104
2
수업 때 쓰셨던 txt file 공유 해주시면 좋겠습니다
1
177
1
shallow copy 질문 있습니다.
1
250
3

