ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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에서 결측치를 제거하는데 사용됩니다.

     

     

Designed by Tistory.