• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

차트까지는 제대로 나오는데 숫자는 서로 바껴서 나옵니다. 왜그런건가요?

20.06.11 07:28 작성 조회수 178

1

import pandas as pd

import numpy as np

import seaborn as sns

import matplotlib.pyplot as plt

 

plt.rc("font",family="Malgun Gothic")

plt.rc('axes', unicode_minus=False)

 

from IPython.display import set_matplotlib_formats

set_matplotlib_formats("retina")

 

 

plt.title("한글폰트 설정")

plt.plot([-4, -6, 1, 2, 0, 3])

 

df = pd.read_csv("date/상가업소정보_201912_01.csv", sep='|')

df.head()

 

 

df.info()

 

columns = ['상호명', '상권업종대분류명', '상권업종중분류명', '상권업종소분류명', 

           '시도명', '시군구명', '행정동명', '법정동명', '도로명주소', 

           '경도', '위도']

print(df.shape)

df = df[columns].copy()

df.shape

 

df.info()

 

 

df_seoul = df[df["시도명"] == "서울특별시"].copy()

df_seoul.head()

 

df_seoul["시군구명"].unique()

 

df_seoul["시군구명"].nunique()

 

df_seoul.to_csv("seoul_open_store.csv", index=False)

 

 

pd.read_csv("seoul_open_store.csv").head()

 

 

df_seoul["상호명_소문자"] = df_seoul["상호명"].str.lower()

 

df_seoul.loc[df_seoul["상호명_소문자"].str.contains("케이에프씨|케이에프시|kfc"), 

             "상호명_소문자"].shape

 

df_seoul.loc[df_seoul["상호명_소문자"].str.contains("맥도날|McDonald"), "상호명_소문자"].shape

 

df_31 = df_seoul[df_seoul["상호명_소문자"].str.contains(

    '케이에프씨|케이에프시|kfc|맥도날|McDonald')].copy()

df_31.shape

 

df_31.loc[df_31["상호명_소문자"].str.contains("케이에프씨|케이에프시|kfc"), 

          "브랜드명"] = "케이에프씨"

df_31[["상호명", "브랜드명"]].head()

 

df_31["브랜드명"] = df_31["브랜드명"].fillna("맥도날드")

df_31["브랜드명"]

 

df_31["상권업종소분류명"].value_counts()

 

df_31[df_31["상권업종소분류명"].isin(["인쇄종합", "한식/백반/한정식","학원-외국어/어학","라면김밥분식"])]

 

df_31=df_31[~df_31["상권업종소분류명"].isin(["인쇄종합", "한식/백반/한정식","학원-외국어/어학","라면김밥분식"])]

 

brand_count = df_31["브랜드명"].value_counts()

brand_count

 

df_31["브랜드명"].value_counts(normalize=True).plot.barh()

 

brand_count.index

 

g = sns.countplot(data=df_31, x="브랜드명")

 

g.text(x=1, y=brand_count[1], s=brand_count[1])

g.text(x=0, y=brand_count[0], s=brand_count[0])

전체코드는 위인데요.   차트까지는 제대로 나오는데 아래 숫자는 서로 바껴서 나옵니다.  왜그런건가요?

       

답변 1

답변을 작성해보세요.

0

안녕하세요.

다른 예제로 실습을 진행해 보셨네요. 좋습니다.👍

마지막 두 줄의 코드를 질문주신게 맞나요? 차트와 brand_count.index 의 출력이 맞게 보입니다.

brand_count 를 출력해 보시면 맥도날드의 수가 더 많게 나올것이고 여기에서는 normalize=True로 비율을 출력하도록 했습니다.

맥도날드의 비율이 50%가 넘어 보입니다.

또, 순서가 바뀌어 나온다고 질문주신 내용을 생각해 보니 맥도날드가 위에 표시되는게 맞지 않냐는 질문 같습니다. 맞나요?

만약 맥도날드를 케이에프씨 위에 출력하고자 하면 value_counts 결과를 sort_values를 통해 ascending=True로 순차 정렬해서 작은 수 기준으로 정렬을 한다면 의도하신대로 그래프가 그려질거 같습니다.