리그캣의 개발놀이터

[pandas] 매장 주소 보정하기. 본문

개발 공부/Python(웹)

[pandas] 매장 주소 보정하기.

리그캣 2018. 5. 16. 12:18

기존에 있던 치킨집 매장 주소를 보정하여 보았다.


주소를 보정하여, goobne_modify.csv 파일로 저장

import pandas as pd # 판다스 사용

filename ='goobne.csv'

판다스 사용하기로 선언

파일이름 선언 (같은 폴더에 넣어놨음)

goobne_table = pd.read_csv(filename, encoding='CP949', index_col=0, header=0)

print(goobne_table.sido.unique())


from_csv 함수가 에러나서 read_csv로 변환하였음.

print처리 안해주면 확인할수 없어서 print로 확인하여줌.

다음과 같이 확인가능한 것을 볼 수 있음.

print(goobne_table[goobne_table['sido']=='0'])

print(goobne_table[goobne_table['sido']==''])

print(goobne_table[goobne_table['sido']==' '])

필요한값을 sido로 갖고있는 튜플 찾아보았음.


해당 인덱스 값 갖고있는 튜플제거

goobne_table = goobne_table.drop([473,509,700,839,898])



print(goobne_table.sido.unique())


sido_table = pd.read_csv('district.csv', encoding='CP949', index_col=0, header=0)

print(sido_table)


m = goobne_table.merge(sido_table, on=['sido', 'gungu'], how='outer', suffixes=['', '_'], indicator=True)


m_result = m.query('_merge=="left_only" ')

print(m_result)

행정구역 데이터를 이용하여 행정구역 데이터 보정.

잘못된 행정구역 찾기

91      일도동광초점    제주도 제주시                   제주도 제주시 연수로3길 7 1층

92         오라점 제주도       제주시 제주도 제주시 오라삼동 2995-1, 지하   

149       호매실점 경기도    수원시권선구 경기도 수원시권선구  서수원로523번길 30-35, 101호

150       오목천점 경기도    수원시권선구        경기도 수원시권선구 오목천로 31

203       하복대점 충청북도    청주시흥덕구       충청북도 청주시흥덕구 죽천로 120

204    청주강서지구점     충청북도 청주시흥덕구                  충청북도 청주시흥덕구 서현북로 24

205        오송점 충청북도    청주시흥덕구        충청북도 청주시흥덕구 만수길 14-4

246        표선점 제주도      서귀포시  제주도 서귀포시 표선면 표선중앙로 106   

247      제주중문점  제주도 서귀포시                  제주도 서귀포시 천제연로 183-1

248      제주동홍점  제주도 서귀포시                   제주도 서귀포시 일주동로 8588

249      신시가지점  제주도 서귀포시                     제주도 서귀포시 신서귀로 43

250  봄그리고가을리조트      제주도 서귀포시    제주도 서귀포시 성산읍 해맞이해안로 2660, 1층\r\n   

251       모슬포점 제주도      서귀포시 제주도 서귀포시 대정읍 화모리 1238-6번지   

다음과 같이 나옴.


print(m_result[['sido','gungu']])


943     경상남도 창원시마산회원구

944     경상남도 창원시마산회원구

945     경상남도 마산회원구


[79 rows x 2 columns]

잘못된 데이터 찾앗음

gungu_alias = """청주시흥덕구:청주시  여주군:여주시 청주시서원구:청주시  용인시기흥구:용인시

고양시일산서구:고양시  부천시오정구:부천시 천안시동남구:천안시  부강면:세종시 연서면:세종시

창원시진해구:창원시  나리로:세종시 갈매로:세종시  성남시수정구:성남시 청주시상당구:청주시

전의면:세종시  조치원읍:세종시 전주시완산구:전주시  창원시마산합포구:창원시 당진군:당진시

안산시단원구:안산시  부천시소사구:부천시 안산시상록구:안산시  수원시장안구:수원시

고양시일산동구:고양시  천안시서북구:천안시 안양시동안구:안양시  부천시원미구:부천시

전주시덕진구:전주시  포항시북구:포항시 창원시마산회원구:창원시   창원시성산구:창원시

안양시만안구:안양시  포항시남구:포항시 수원시권선구:수원시   고양시덕양구:고양시

청원군:청주시   용인시수지구:용인시   수원시영릉구:수원시 청주시청원구:청주시   성남시분당구:성남시

용인시처인구:용인시   수원시팔달구:수원시 누리로:세종시   도움3로:세종시 보듬3로:세종시 성남시중원구:성남시

수원시영통구:수원시   마산회원구:마산시 창원시의창구:창원시

              """


gungu_dict = dict()

for aliasset in gungu_alias.split():

  s = aliasset.split(':')

  gungu_dict.update({s[0]: s[1]})


goobne_table.gungu = goobne_table.gungu.apply(lambda v: gungu_dict.get(v,v))

m = goobne_table.merge(sido_table, on= ['sido', 'gungu'], how='outer', suffixes=['', '_'], indicator=True)

m_result = m.query('_merge =="left_only"')

print("여기서 수정해야함")

print(m_result[['sido','gungu']])



에러나서 다음과 같이 수정하였음

print로 해당 좌표찍으면서 수정하여 완료

goobne_table.to_csv('goobne_modify.csv', encoding="euc-kr", mode='a', header=False)

다음과 같이 사용할시 csv파일 상측이 깨지는 현상이 발생됩니다. 해당현상은 해결하지 못하였습니다.



Comments