1.
문제 상황 : 제시된 농업 데이터 셋을 SQL에 연결 시킬 때, 오류 발생
Error occurred during batch insert (you can disable batch insert in order to skip particular rows).
이유: Can't parse numeric value [-] using formatter
SQL
복사
•
오류 해석:
SQL⇒ 데이터 셋 중 칼럼에서 INT값 열의 값이 ‘-’ 인 값이 있다. 나는 이걸 어떻게 처리할지 모르겠다.
⇒ 문제 해결하기 위해선 ‘-’ 값을 제거하거나 nan 값으로 변환해야 한다.
2.
해결 방안 :
a.
연결 시키려 했던 데이터 셋 중 어느 데이터(CSV)가 문제 있는지 찾기
⇒ 22_환경정보.csv 에서 오류 발생
b.
문제가 있는 데이터 셋의 값 중 ‘-’ 데이터 찾기
⇒ 파이썬에서 ‘-’ 값 필터링해서 칼럼 찾기
c.
‘-’ 값의 행들을 NAN 값으로 변환하기
⇒ environment['senVal']의 ‘-’ 값을 NAN으로 변환하기
3.
해결 코드
import pandas as pd
import numpy as np
# 파일 불러오기
energy = pd.read_csv(r"project_data_set\영어ver\22_energtinfo.csv", encoding="euc-kr",low_memory = False)
environment = pd.read_csv(r"project_data_set\영어ver\22_enviroinfo.csv", encoding="euc-kr",low_memory = False)
growth = pd.read_csv(r"project_data_set\영어ver\22_growinfo.csv", encoding="euc-kr",low_memory = False)
production = pd.read_csv(r"project_data_set\영어ver\22_proinfo.csv", encoding="euc-kr",low_memory = False)
# 오류발생 데이터 셋 칼럼 찾기
#(environment=='-').any()이랑 같은 뜻의 .eq('조건') : dataframe(series 가능)불리언 마스크 생성기 / 각셀마다 ('조건')을 비교하며 true와 false 생성
environment.eq('-').any()
'''
farm_cde False
measDate False
itemCode False
sectCode False
classCode False
fatrCode False
senVal True
dtype: bool
'''
# senVal 칼럼의 '-' 행이 있는지 다시 확인
environment[environment['senVal'] == '-']
#'-' → NAN으로 강제 변환
## (pd.to_numeric는 값을 숫자로 해석할 수 있으면 숫자로 변환, 아니면 nan으로 변환)
environment['senVal'] = pd.to_numeric(environment['senVal'], errors='coerce')
# SQL에 넣을 데이터(csv) 다시 저장
environment.to_csv("22_enviroinfo2.csv", index=False, encoding="euc-kr")
Python
복사


