-
7.10.월요일 - 데이타 오류 경험TIL( Today I Learned) 2023. 7. 10. 13:56
7.10\\
데이터 프레임 DataFrame 공부 시작 76페이지
오늘 목표 ->170까지
df = pd.DataFrame( {'name': ['김지훈', '이유진', '박동현', '김민지'],
'english' : ['90', '80', '70', '60'],
'math': ['50', '60', '100', '20']})
df
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
이 코드를 실행하면 표가 나온다.
그러나 이것을
sum(df['english’])하면 오류가 나온다
오류의 내용은
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-27-2a22c0633eeb> in <cell line: 1>()
----> 1 sum(df['english'])
TypeError: unsupported operand type(s) for +: 'int' and 'str'
그래서 chatGpt에게 물어봤더니
TypeError: unsupported operand type(s) for +: 'int' and 'str'라는 오류 메시지는 DataFrame df의 'english' 열에 값들 간에 타입 불일치가 있는 것을 나타냅니다.
Python에서 sum() 함수는 숫자들의 시퀀스의 합을 계산하는 데 사용됩니다. 그러나 시퀀스의 모든 요소들이 동일한 숫자 타입이어야 합니다. 이 경우에는 오류가 'english' 열에 숫자와 문자열 값이 혼합되어 있다는 것을 나타내며, Python에서는 정수와 문자열을 '+' 연산자로 함께 사용하는 것을 지원하지 않습니다.
이 문제를 해결하려면 'english' 열의 모든 값들이 동일한 숫자 타입(예: 정수 또는 부동소수점)을 가져야 합니다. df['english'].dtype를 사용하여 'english' 열의 데이터 타입을 확인하고, 비숫자 값들을 확인해야 합니다.
만약 비숫자 값이 있다면, 데이터를 정제하거나 전처리해야 할 필요가 있습니다. 예를 들어, pd.to_numeric()를 사용하여 열을 숫자 타입으로 변환하거나 비숫자 값들을 적절하게 처리해야 할 수 있습니다 (예: NaN으로 대체하거나 기본값으로 설정).
다음은 'english' 열을 숫자 타입으로 변환하고 비숫자 값을 처리하는 예시입니다:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
이렇게 되어있다.
그래서 해결 방법은
df['english'] = pd.to_numeric(df['english'], errors='coerce')
sum(df['english'].dropna())
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
그러니 해결되었다
** 알고보니 내가 English 의 데이터를 숫자로 넣지않고 문자로 한거- 실수였다. ’90’—> 90 이렇게 바꾸니 된다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
실수를 통한 학습
df['english'] = pd.to_numeric(df['english'], errors='coerce') 코드는 'english' 열을 숫자 타입으로 변환하여 원래의 DataFrame에 다시 할당하는 역할을 합니다. pd.to_numeric() 함수는 Series의 데이터 타입을 숫자로 변환하는데 사용됩니다. errors='coerce' 옵션은 변환할 수 없는 값들을 NaN(결측치)으로 처리하도록 지정합니다.
df['english'].dropna() 코드는 'english' 열에서 결측치를 제거한 Series를 반환합니다. dropna() 함수는 DataFrame이나 Series에서 결측치를 제거하는데 사용됩니다.
'TIL( Today I Learned)' 카테고리의 다른 글
7.12.수요일, 데이타 공부에서 & 프로그래머스 기초문제 풀이 (0) 2023.07.12 7.11.화요일 (0) 2023.07.12 2023.7.8.토요일 (0) 2023.07.10 2023.7.8. / 최빈값 구하기와 Python의 내장 클래스, Counter (0) 2023.07.07 2023.7.7. 금요일 - map() 함수 & lambda() 함수 (0) 2023.07.07