• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

enumerate에 대해서 질문드립니다.

21.05.20 19:51 작성 조회수 139

1

항상 정성가득 담긴 답변에 감사드립니다.

지금까지 해온 데이터분석에 대해서 복습해오면서 

plot.bar()와 같이 시각화를 하고 그에 대해 구체적인 숫자를 첨부하는 코딩을 연습하고 있습니다. 

구체적인 예를 들어,

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

brand_count

와 같이 변수를 정의하고,

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

for i, val  in enumerate(brand_count.index):

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

와 같이 코드를 입력하면 막대위에 구체적으로 해당 브랜드의 총 개수가 나옵니다. 

여기서 반복문의 사용과 인덱스를 서술해주는 enumerate의 기능도 이해했습니다. 

문제는 .. g.text 안에 있는 x y s 에 대해 이해가 조금 어렵습니다. 

x=는 해당 브랜드명이 나오고 그다음 y축은 숫자인데 여기서brand_count의 값은 0 이디야 혹은 1 스타벅스입니다.

이걸로 어떻게 숫자를 계산한건지 이해가 잘되지 않습니다.

답변 1

답변을 작성해보세요.

0

안녕하세요.

복습을 하며 연습을 하고 있다니 멋집니다 👍


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

이 부분에서는 위에서 정의한 brand_count 변수를 사용하시는게 혼란이 덜할것 같아요.

아니면 정렬이 순서에 맞게 order= brand_count.index 를 넣어주셔도 좋을것 같습니다.

brand_count 는 빈도수 순으로 나오기 때문에 위와 같이 빈도수와 시각화를 따로 하면 x축 순서가 맞지 않을 수 있습니다.

    g.text(x=i, y=brand_count[i], s=brand_count[i]) 로 텍스트를 표기할때 x 는 막대의 순서를 의미합니다.

파이썬은 인덱스가 0번 부터 시작하기 때문에 enumerate로 받은 순서를 넣어주면 첫번째 막대부터 값을 그려주게 됩니다.

y값은 빈도수로 정렬된 brand_count 에서 해당 인덱스 순서에 해당되는 값을 순서대로 가져오고 y축의 좌표값을 의미합니다. 막대 조금 위나 아래에 값을 표기하려면 이 y값에 값을 더하거나 빼는 방법으로 조정해 보실 수 있습니다.

s는 실제 그래프에 나타낼 값을 의미합니다. brand_count의 빈도값을 적어주면 되겠죠.

인덱스값으로 brand_count 변수에 담긴 값을 가져오는데 잘 이해가 되지 않을때는 해당 값을 print문으로 출력해 보면서 실습해 보시면 어떤 값들이 g.text() 안에 들어가는지 확인해 보는데 도움이 될것 같아요.

감사합니다 :)