Debugging

    OverflowError: Python int too large to convert to C long 해결법

    df['price'].astype('int') astype(int)를 했는데 이런 에러가 발생했다. OverflowError: Python int too large to convert to C long 찾아보니 숫자가 sys.maxsize 보다 크면 이런 에러가 발생할 수 있다고 해서 sys.maxsize를 확인해봤다. 내 데이터 중엔 이 숫자보다 큰 데이터는 없는것 같은데 뭐가 문제인지 모르겠다. 어쨌든 해결방법은 astype(int) 대신 pd.to_numeric을 사용하면 된다. df['price'] = pd.to_numeric(df['price'])

    df.str.contains 사용 시 발생 에러 - ValueError: Cannot mask with non-boolean array containing NA / NaN values

    프로젝트 진행 중 가격에 ' ~ '가 들어간 데이터가 있어서 drop 해 주기 위해 df.str.contains를 사용했는데 에러가 발생했다. df2.loc[df2['price'].str.contains('~'), 'price'] = 0 에러 내용은 다음과 같다. ValueError: Cannot mask with non-boolean array containing NA / NaN values 문자열을 찾을 때 컬럼에 NaN값이 존재하면 NaN을 반환하기 때문에 에러가 발생하는 것이다. 해결을 위해서는 NaN 값이 존재하는 경우에 대한 예외처리가 필요하다. str.contains() 함수의 파라미터 na를 사용하여 NaN을 만났을 경우 기본값을 설정해 줄 수 있다. df2.loc[df2['price']...

    Android - 미디어 파일 사용 권한 선택 에러

    https://donghyeok90.tistory.com/281 Android Studio - 카메라 or 갤러리에서 사진 가져오기 Cheet Sheet 1. fileprovider.xml 만들기 res - xml 에 XML Resource file을 추가 파일명은 fileprovider로 만들고 아래 코드를 복사해 넣는다. 2. Manifest 설정 AndroidManifest.xml에 다음 항목들을 추가해 넣는다. 의 authorities는 자 donghyeok90.tistory.com 이 포스팅에서 다룬 코드가 일부 환경에서는 정상적으로 동작하지 않았다. '앨범에서 가져오기'를 선택하면 미디어 파일 접근 권한 설정을 물어보는 창이 나와야 하는데, 아무것도 나오지 않았다. 로그는 다음과 같이 나왔다...

    Android Studio 에러 - Emulator is already running

    Error while waiting for divice: AVD Pixel 2 API 33 is already running 안드로이드 스튜디오에서 에뮬레이터를 실행하려 하는데 이런 에러가 뜨면서 실행이 안 됐다. 안드로이드 에뮬레이터가 비정상적으로 종료되거나 문제가 있을 때 발생하는 에러라고 한다. 해결법은 에러 메시지에 나와 있는 것처럼 에뮬레이터 경로로 가서 .lock으로 끝나는 파일들을 삭제해주면 된다. .lock 으로 끝나는 파일을 모두 삭제하고 다시 실행하면 정상적으로 동작한다.

    Android Studio - TextView.setText() 에러

    위와 같은 에러는 setText 메소드에 문자열이 아닌 데이터 타입을 줬을 때 발생한다. setText 메소드는 문자열만 받을 수 있기 때문에 문자열로 변경해줘야 한다. 빈 따옴표에 덧셈처리 하면 간단하게 문자열로 형변환 할 수 있다. textview.setText(number + "");

    포스트맨 에러 - Error: write EPROTO 64064520:error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER:../../../../src/third_party/boringssl/src/ssl/tls_record.cc:242:

    포스트맨에서 테스트를 하다가 이런 에러가 발생했다. Error: write EPROTO 64064520:error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER:../../../../src/third_party/boringssl/src/ssl/tls_record.cc:242: 에러날 구석이 없는 거 같은데 처음보는 에러라서 당황했는데, 찾아보니 이런 유형의 에러는 해당 API가 http만 지원하는데 https를 사용하려고 할 때 발생한다고 한다. AWS로 배포한 주소와 로컬주소를 번갈아가며 테스트하다가 로컬 주소에 https라고 적어서 발생한 문제였다. http로 바꿔서 Send하면 정상적으로 동작한다.

    MySQL - 예약어를 테이블명으로 썼을 때 에러 해결방법

    select * from like SQL에서 예약어로 쓰이는 like를 테이블명으로 만들었더니 문법에러가 발생한다. 해결방법은 두가지가 있다. 1. 테이블명을 바꾼다. 가장 간단한 방법. likes 등으로 테이블명으로 바꾸면 된다. 2. SQL문에서 해당 테이블명을 ` ` 로 감싼다. select * from `like` 이렇게 사용하면 에러없이 잘 동작한다.

    판다스 read_csv 에러 - ParserError: Error tokenizing data.

    pd.read_csv() 를 하는 과정에서 에러가 발생했다. ParserError: Error tokenizing data. C error: Expected 23 fields in line 533719, saw 24 이 에러는 다른 라인들보다 구분자(seperator)의 갯수가 많은 라인이 있을 때 발생한다. 직접 csv 파일을 수정해도 되지만, 위처럼 데이터가 많은 경우는 찾아서 수정하는 것도 일이기 때문에 read_csv의 파라미터로 에러가 발생한 라인만 제거하고 가져올 수 있다. 파라미터에 error_bad_lines= False 를 추가해준다. chicago_df_1 = pd.read_csv('Chicago_Crimes_2005_to_2007.csv', error_bad_lines=False, i..