작성
·
556
1
Industry의 빈도를 순차적으로 결과를 도출하였고
value_counts()는 알아서 빈도가 높은 값부터 낮은 값으로 순처적으로 나온다고 하였는데
그래프를 df["Industry"].value_counts().head(20).plot.barh()
를 통해서 그리니까 빈도수가 반대로 나와서 다시 sort_values()를
통해서 정렬을 했는데요.
그래프로 하면 왜 value_counts()만으로는 빈도수가 제대로 정렬이 안되고
다시 sort_values()를 해줘야 하는걸까요?
그리고df["Market"].value_counts().sort_values().plot.barh()에서는
빈도수대로 정렬을 했는데
sns.countplot(data=df, y="Market").sort_values() 는 오류가 나서
빈도수대로 그래프 정렬은 어떻게 하면 되나요?
sort_values()에 대해서 찾아보는데 정해진 기준에 따라 값을
정렬하는 함수라고 하는데 현재 코딩에서는 어떤 특별한
기준이 설정되거나 주어지지 않은거 같아서요...
무작정 그냥 외우기에는 조금 부족한 느낌이 들어 문의합니다.
감사합니다~
답변 1
1
안녕하세요.
해당 내용은 ETF 시각화에서 자세히 다루는데요.
value_counts().barh() 를 하게 되면 빈도수가 낮은게 가장 아래에 표현이 됩니다.
그래서 sort_values()로 다시 정렬이 필요한데, 가로 막대가 그려지는 그래프는 빈도수가 가장 많은게 가장 하단에 오도록 구현이 되어 있어서 반대로 정렬하고자 하면 다시 sort_values()로 정렬이 필요합니다.
그리고 sort_values() 는 판다스의 기능이라 seaborn 에 메서드 체이닝 형태로는 사용할 수가 없습니다.
대신 order 에 정렬할 값을 리스트 형태로 지정하면 해당 값을 기준으로 정렬이 됩니다.
그래서 seaborn 의 countplot 을 사용하기 위해서는 아래와 같이 정렬해줄 값을 순서대로 지정해 주어야 합니다.
sns.countplot(data=df, y="유형", order=df["유형"].value_counts().index)