공공 데이터 분석 프로젝트(커피 전문점) 02

2022. 7. 5. 09:42Data Science/with Python(Numpy, Pandas …ect.)

이어서 카페 데이터만 뽑아내어

데이터를 구경해볼 것이다.

 

업종 '카페'만 추출하기 - 전국/서울 단위 확인

우선 카페가 데이터 내에 어떤 이름으로

분류가 되어있는지 모르는 상태이기 때문에

# set(data["상권업종대분류명"])
set(data["상권업종중분류명"])

입력하여 확인해봤다.

처음엔 대분류로 찾아봤으나 분류기준이

너무 커서 중분류로 변경하였고, 목록에서

'커피점/카페' 항목을 확인할 수 있었다.

# 카페만 추출
df_coffee = data[data["상권업종중분류명"] == "커피점/카페"]

# index를 다시 세팅.
df_coffee.index = range(len(df_coffee))

print("전국 커피 전문점 점포 수 : ", len(df_coffee))

따라서 업종중분류명이 "커피점/카페"인 것을

masking한 data를 df_coffee에 저장했다.

좌 →  우 로 index 업데이트

근데 출력값 index가 마음에 들지 않아

index 자체를 update 해줬다.

삭제❌ 업데이트⭕

 

서울내 커피 전문점

위와 같이 set(data["시도명"])으로

서울은 "서울특별시"로 입력되어 있는 것을

확인하고 코드에 적용한다.

# 카페 중에 "서울"에 위치하고 있는 점포만 추출.
df_seoul_coffee = data[(data["상권업종중분류명"] == "커피점/카페") & (data["시도명"] == "서울특별시")]
df_seoul_coffee.index = range(len(df_seoul_coffee))
print('서울시 내 커피 전문점 점포 수 :', len(df_seoul_coffee))

이중 (괄호)로 묶고 &로 연결한

이중 masking 잘 봐두기★★★

이렇게 서울에 있는 카페만 예쁘게

추출한 결과가 나오면 성공한거다.


중요하다고 했던 이중 masking 연습을

위해 전국과 서울에 있는 특정 카페를

뽑아내는 연습을 해봤다.

ex_(전국/서울) 스타벅스, 이디야 등등

 

# 전국에 있는 스타벅스
df_starbucks = df_coffee[df_coffee["상호명"].str.contains("스타벅스")]
df_starbucks.index = range(len(df_starbucks))
print('전국 스타벅스 점포 수 :', len(df_starbucks))

데이터를 살펴보면 몇몇 드라이브스루와

같이 특이한 지점들은 == "스타벅스" 로

조건을 걸어줄 때 제외가 되기 때문에

상호명에 "스타벅스"가 포함된 것들을

전부 뽑아주는 str.contains 함수를 사용했다.

 

str.contains 함수는

특정 string(글자)가 포함된 값을

찾아 추출하고 싶을 때 사용하는 함수

df_coffee에서 찾아 masking하므로

위와 같이 코드를 작성하였다.

Run을 돌리면 이렇게 잘 나오는 것을

확인할 수 있다.

# 서울에 있는 스타벅스
df_seoul_starbucks = df_starbucks[df_starbucks["시도명"] == "서울특별시"]
df_seoul_starbucks.index = range(len(df_seoul_starbucks))
print('서울시 내 스타벅스 점포 수 :', len(df_seoul_starbucks))
df_seoul_starbucks

아까 했던 것처럼 df_coffee에

이중 masking을 해도 되지만

방금 위에서 스타벅스만 걸러놓은

df_starbucks가 있어 그냥 편하게

해당 df에 indexing을 해주었다.

(결과)

 

# 전국 이디야
df_ediya = df_coffee[df_coffee["상호명"].str.contains("이디야")]
df_ediya.index = range(len(df_ediya))
print('전국 이디야 점포 수 :', len(df_ediya))
df_ediya

# 서울 이디야
df_seoul_ediya = df_ediya[df_ediya["시도명"] == "서울특별시"]
df_seoul_ediya.index = range(len(df_seoul_ediya))
print('서울시 내 스타벅스 점포 수 :', len(df_seoul_ediya))
df_seoul_ediya

# 전국 커피빈
df_coffeebean = df_coffee[df_coffee["상호명"].str.contains("커피빈")]
df_coffeebean.index = range(len(df_coffeebean))
print('전국 커피빈 점포 수 :', len(df_coffeebean))
df_coffeebean

# 서울 커피빈
df_seoul_coffeebean = df_coffeebean[df_coffeebean["시도명"] == "서울특별시"]
df_seoul_coffeebean.index = range(len(df_seoul_coffeebean))
print('서울시 내 커피빈 점포 수 :', len(df_seoul_coffeebean))
df_seoul_coffeebean

이런 식으로 데이터 내 모든 프렌차이즈

카페의 변수를 만들어준다. 물론 for문을

활용한 방법도 있지만 다음 학습을 위해

일일히 노가다로 만들 예정이다.