인프런 커뮤니티 질문&답변
한 지점의 상권업종중분류명 변경과 3개 이상의 업체 한 브랜드명에 입력방법
작성
·
498
1
지문드리는거는 강의 에 있지 않고 비슷하게 제가 연습하고 있는것입니다.
chapter4 마치고 서울에다 인천도 추가하고 업채도 폴바셋 , 커피빈,
투썸플레이스, 그리고 지점명 까지 추가하고 같은 유사하게 하고 고 있었습니다.
인천쪽에서 incheon_cafe 란 변수에 한 브랜드명을 입력시키고
다른 업종 제외시키는걸 하던중 원본 data에 입력이 잘못되어 있는것을 찾았습니다.
폴바셋이 인천 영종도에 하나밖에 없던데 상권업종중분류명 이 일식/수산물
상권업종소분류명 음식점-초밥전문 으로 잘못되어 있습니다. 인천에 지점이 하나다 보니
제외시키는걸 하면 인천 데이타에서 폴바셋이 사라벼 버립니다
원본네용이면서 한 지점을 중심으로 상권업종중분류명 ,상권업종소분류명 바꾸는 방밥을 모르겠습니다.
그리고 한 데이터에 강의와 다르게 5개 업체를 집어넣을때 우선 제 방식으로 하긴 하였는데
여러 cell 을 사용하여 한 cell 에서 다 처리할수 방법을 아지 못찾았습니다.
그리고 원 데이터 에지 지점명이 누락되어서 몇 지점이 NaN으로 나오는곳이 있습니다.
그런데도 지정한 지점에 물리적으로 체울수 있는 방법은 전혀 모르겠습니다.
답변 3
1
답변 빨리 주셨던데 제가 다른 강의도 같이 듣고 있어 확인이 늦었습니다.
알려주신 첫 질문 답변대로 우선 해보았습니다.
상권업종대분류명 은 음식 으로 동일하고
상권업종중분류명 의 일식/수산물 을 커피점/카페 변경하는 것과 상권업종소분류명 의 음식점-초밥전문 을 커피전문점/카페/다방 으로
변경하려 하였는데 답변해주신 cell 내용이 어려워 보이지 않던데 error 발생하였습니다.
df.loc[(상호명조건) & (상권업종대분류명조건), "상권업종대분류명"] = "원하는 분류명"
위에 알려주신 내용을 df 는 제가 incheon_cafe 로 변수명 바꾸어 바꾸었고 아래와 같이
바꾸어 설정하고 돌려 보았습니다. 혹시 순서가 잘못되나 해서 Kernel의 Restart & Run All 로 클릭하였습니다.
incheon_cafe.loc[(폴바셋영종도파라다이스) & (일식/수산물), "상권업종중분류명"] = "커피점/카페"
적어주신 내용과 같이 ( ) & ( ) 띄워서 해보았고 아직 잘 모르는게 많아 다 붙여서도 해보았습니다. ()&()
그리고 () 를 " " 로도 ' ' 로도 변경하면 해보았는데 다 error 가 발생하였습니다.
아래 screenshot 다 올려 놓았습니다.
두 번째 질문은 우선 제가 한게 길어도 안정적이란 답변 에 동의 하며 그대로 유지하기로 하였습니다.
단 여러가지 해보는게 좋을때라 알려주신 map , apply 를 찾아보며 천천히 시도해 볼 계획입니다.
세번째 질문이였던 내요의 답변이 df[df["브랜드명"] .isnull()] 해보긴 하였는데 2번 밖에 클릭 못해보았고
incheon_cafe[incheon_cafe["이디야"].isnull()] 와 같이 설정하여 시도하였었는데
raceback (most recent call last) 으로 KeyError: '이 역시 error 났었습니다.
0
안녕하세요.
스크린샷을 올려주신 덕분에 질문을 이해하는데 도움이 되었습니다.
1. 제가 답변에 아래와 같은 방식으로 알려드렸는데요. 분류명은 원하는 분류명으로 잘 적어주셨는데
df.loc[(상호명조건) & (상권업종대분류명조건), "상권업종대분류명"] = "원하는 분류명"
텍스트로 상호명 조건을 적어주시면 조건식이 되지 않습니다.
위 방법은 상호명으로 조건식을 만들어 주시라는 의미였습니다.
예를 들어 (df["상호명"] == "폴바셋") & (df["상권업종중분류명"] == "일식/수산물") 처럼 적어주셔야 합니다.
제가 조건식을 텍스트로 알려드린 이유는 다른 조건에도 해당 방법으로 적용해 보실 수 있도록 조건식을 그대로 작성하지 않았는데요.
위 조건으로 입력했을 때도 원하는 결과가 나오지 않을 수도 있습니다.
예를 들면, == 연산은 정확하게 텍스트가 일치해야지 값을 가져오게 됩니다.
코딩을 하다보면 오타나 대소문자 오류 등으로 시간을 소비하게 되는 경우가 많은데요.
이런 부분이 스트레스가 될 수도 있지만 해당 언어나 라이브러리의 특징을 더 잘 이해하는데 도움이 될 수 있으니 직접 조건식을 작성해 보세요.
2. 번은 map, apply를 강의 중 예제에서 사용하니 참고하셔서 작성해 보시면 될것 같습니다.
3. 세번째 질문의 incheon_cafe[incheon_cafe["이디야"].isnull()] 이 결과의 오류 메시지를 KeyError 라고 적어주셨는데요.
해당 오류 메시지는 "이디야"라는 컬럼이 데이터 프레임에 존재하지 않는다는 의미입니다.
올려주신 스크린샷으로 봤을 때 incheon_cafe[incheon_cafe["브랜드명"].isnull()] 으로 존재하는 컬럼을 작성해 주셔야 합니다.
0
안녕하세요. 강의 내용 외 실습 멋집니다.
1. 일식/수산물이 오류 데이터라 판단해서 변경하고자 하신다면 해당 데이터를 불러와서 원하는 데이터로 변경해 주시면 됩니다.
df.loc[(상호명조건) & (상권업종대분류명조건), "상권업종대분류명"] = "원하는 분류명" 처럼 변경해 주시면 될것 같습니다.
2. 조건마다 .loc를 사용해서 변경했는데 한 번에 가능한지를 질문 주신거 같습니다.
해당 조건을 함수로 구현하시면 apply, map 등을 통해서 적용이 가능합니다. 하지만 이렇게 조건이 여러가지가 있을 때는 지금 구현해 주신 방법이 실수를 줄일 수 있는 더 나은 방법일것 같습니다.
3. 브랜드명이 NaN 으로 결측치로 나오는 데이터만 따로 추출해 보시고 왜 결측치가 발생했는지 살펴보시고 조건에 추가해 주시면 될것 같습니다.
df[df["브랜드명"] .isnull()] 등의 코드로 어떤 데이터에 결측치가 왜 발생했는지 찾아보세요.





