Python

전국 음식점 데이터 전처리

데브플레이버 2023. 4. 20. 00:59
반응형

 

행정안전부_일반음식점 데이터를 기준으로 데이터 정리를 해보았다.

 

먼저 판다스를 이용하여 파일을 로드했다

정부 관련 파일들은 대부분 인코딩 형식이 cp949이다.

encoding='cp949'를 추가한다.

import pandas as pd
df = pd.read_csv("./fulldata_07_24_04_P_일반음식점.csv", encoding='cp949')
 

데이터 프레임은 206만 123개의 row가 있다.

전국 음식관련 업종이 206만여개가 있다는 뜻이다.

하지만 영업상태명을 보았을때 폐업이 있는 것으로 보아 현재 영업중인 파일만 출력하기로 한다.

 

# 폐업구분 

df = df.query("영업상태명!='폐업'")

영업상태명컬럼에서 폐업이 아닌 데이터만 남긴다.

2,060,123 rows -> 691,795 rows 약 1/3의 데이터 드롭

# 컬럼 정리

불러온 데이터 프레임의 컬럼을 본다면 실제로 결측치인 경우가 많다.

필요 없는 데이터와 함께 계속 데이터 프레임을 확인하며 데이터 프레임을 드롭한다.

df = df.drop(['인허가일자', '인허가취소일자', '영업상태구분코드','시설총규모','소재지전화'], axis=1)
df = df.drop(['위생업태명', '남성종사자수', '여성종사자수', '영업장주변구분명',
       '등급구분명', '급수시설구분명', '총직원수', '본사직원수', '공장사무직직원수', '공장판매직직원수', '공장생산직직원수',
       '건물소유구분명',], axis=1)
df = df.drop(['홈페이지','Unnamed: 47','개방서비스아이디', '폐업일자', '휴업시작일자', '휴업종료일자', '재개업일자'], axis=1)
df = df.drop(['소재지면적', '소재지우편번호','데이터갱신구분','개방서비스명','관리번호', '상세영업상태코드', '도로명우편번
호'], axis=1)
df = df.drop(['번호','상세영업상태명','영업상태명'], axis=1)

# 지자체 기준으로 정렬

해당 데이터는 개방자치단체코드라는 컬럼으로 각 지자체 라벨링이 되어있다.

df_label = df['개방자치단체코드'].unique()

len(df_label)

len 을 이용하여 df_label의 개수를 확인하여보면 229개로 나온다.

기초지자체의 개수를 확인하여 보니 229개가 맞다.

# 데이터 재정렬

기초지자체를 기준으로 파일을 따로 관리하고자 한다.

따라서 쉽게 정리하기 위해 개방자치단체코드를 기준으로 재정렬한다.

df_sorted = df.sort_values(by='개방자치단체코드')

# csv파일로 출력

from tqdm import tqdm

dfs = []
for code in df['개방자치단체코드'].unique():
    temp = df_sorted[df_sorted['개방자치단체코드'] == code]
    dfs.append(temp)

# 생성된 데이터프레임 출력하기
for i, df_temp in tqdm(enumerate(dfs), total=len(dfs)):  
    filename = f"{df_temp['개방자치단체코드'].iloc[0]}.csv"  # 파일명을 개방자치단체코드로 지정
    df_temp.to_csv(filename, index=False)  # 인덱스를 저장하지 않음

먼저 변환 과정이 얼마나 시간이 걸리는지를 확인하기 위하여 tqdm모듈을 임포트 하였다.

dfs 라는 빈 리스트를 만들고. 229개의 개방자치단체 코드와 일치하면 정렬된 파일을 리스트에 추가한다.

df_sorted['개방자치단체코드'] == code

일때 temp에 해당 컬럼들을 temp로 정의해놓고

dfs 리스트에 추가한다.

csv 파일로 저장한 결과 글자가 다 깨졌다.

 

# 인코딩 형식 지정

정부 csv 파일은 대부분 cp949 이다.

인코딩형식을 지정하지 않아서 발생하는 것으로 utf-8-sig로 설정하면 위와 같은 문제를 해결 할 수 있다.

 

반응형

'Python' 카테고리의 다른 글

Python01. 파이썬 기초  (0) 2023.04.28