반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 유학생
- Seaborn
- 로지스틱회귀
- 행렬
- 파이썬
- 머신러닝
- matplotlib
- HTML
- 나혼자코딩
- 데이터분석
- 오늘도코드잇
- 판다스
- for반복문
- 코딩공부
- 코딩독학
- CSS
- SQL
- 결정트리
- 코드잇 TIL
- 경사하강법
- 런던
- 영국석사
- 선형회귀
- 다항회귀
- 코드잇
- 윈도우함수
- 코드잇TIL
- numpy
- sql연습문제
- 코딩
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(데이터분석) seaborn과 matplotlib으로 막대그래프 작성하기 본문
728x90
반응형
1. Seaborn으로 막대 그래프 작성하기
- 도수를 나타내는 기본적인 막대 그래프는 seaborn의 countplot함수를 사용하여 작성할 수 있습니다.
seaborn.countplot(*, x=None, y=None, data=None, order=None, orient=None, color=None)
1) 막대 그래프 색상 지정하기
#필요한 패키지 불러오기
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#csv 파일을 읽은 다음 뒤에서부터 10개의 행 확인하기
df = pd.read_csv('diamonds.csv')
print(df.shape)
df.head(10)
#명령문 끝에 세미콜론(;)을 추가하여 차트 관련 정보가 표시되지 않게 하기
sns.countplot(data=df, x='cut');
- 위의 예시에서는 모든 막대가 서로 다른 색상을 갖습니다. 이와 같이 여러 색상을 활용하면 많은 변수가 존재하는 차트에서 각 범주의 레이블과 시각적 부호 간의 연관성을 나타낼 수 있습니다.
- 하지만 그런 경우가 아니라면 모든 막대를 같은 색상으로 나타내어 불필요한 시각적 요소를 제거하는 것이 좋습니다.
- colorcolor 인수를 사용하면 모든 막대를 동일한 색상으로 나타낼 수 있습니다.
- 첫 번째 방법은 seaborn의 color_palette 함수를 사용하여 색상 값을 선택하는 것입니다.
- 이 함수는 자신의 인수에 설정된 색상 팔레트에 대응하는 튜플 리스트를 반환합니다.
sns.color_palette()
- 이런 식으로 기본 색상의 배열 또는 리스트가 반환됩니다.
- 이 리스트에서 첫 번째 색상만 가져오기 위해 인덱스를 0으로 지정하고 이를 color라는 변수에 할당합니다.
- 이제 countplot 함수 매개변수에 color을 방금 설정한 변수 color로 지정하면 한 가지 색상의 차트를 얻을 수 있습니다.
- 두 번째 방법은 원하는 색상을 직접 지정하는 것입니다.
- tableau 색상 팔레트에 존재하는 파란색을 선택하면 됩니다.
#color_palette()로 현재 설정된, 혹은 기본으로 설정된 팔레트를 RGB 튜플 리스트로 반환할 수도 있습니다.
#각 튜플은 빨간색, 초록색, 파란색 채널 값을 나타내는 세 자리 숫자들로 구성되며 특정 색상을 나타냅니다.
#RGB 색상의 첫번째 튜플 선택하기
base_color = sns.color_palette()[0]
#첫 번째 방법 : 색상 팔레트를 직접 사용하기
sns.countplot(data=df, x='cut', color=base_color)
#두 번째 방법 : tableau blue를 사용하는 차트
sns.countplot(data=df, x='cut', color='tab:blue')
2) 막대 그래프 내림차순 정렬하기
- 막대 그래프를 내림차순으로 정렬하는 방법은 countplot 함수에 order이라는 새 매개변수를 도입하면 됩니다.
- 이 매개변수는 막대 정렬 순서를 나타내는 리스트를 인수로 갖습니다.
- 코딩으로 리스트를 작성할 수 있는데, 번거로운 방법입니다.
- 이때, pandas 함수 value_counts를 사용하면 됩니다.
- value_counts는 변수의 각 범주에 속하는 데이터의 개수를 파악합니다.
- 그리고 그 결과를 크기에 따라 내림차순으로 정렬한 리스트를 생성합니다.
- 막재의 순서를 가져오려면 .index를 추가하여 인덱스만 가져오게 한 다음 이를 order라는 변수에 저장하고 counterplot에서 매개변수 order을 변수 order로 지정하면 됩니다.
- 이 함수는 series또는 dataframe의 한 열에 적용할 수 있습니다.
order = df['cut'].value_counts().index
sns.countplot(data=df, x='cut', color='tab:blue', order=order)
3) x축의 레이블 회전하기
- x축의 레이블이 아주 긴 경우 유용합니다.
- 이때, matplotlib의 xticks함수를 사용하면 됩니다.
- 그리고 매개변수 rotation을 원하는 값으로 설정하면 됩니다. 15도로 설정해보겠습니다.
sns.countplot(data=df, x='cut', color='tab:blue', order=order);
plt.xticks(rotation=15)
4) 막대 그래프 수평으로 만들기
- 매개변수 x를 매개변수 y로 바꾸면 그래프를 수평으로도 만들 수 있습니다.
sns.countplot(data=df, y='cut', color='tab:blue', order=order)
2. Matplotlib으로 막대 그래프 작성하기
- seaborn이 아닌 matplotlib을 사용해도 비슷한 차트를 작성할 수 있습니다.
- matplotlib.pyplot.bar()함수를 사용하면 됩니다.
matplotlib.pyplot.bar(x, y, width=0.8, botton=Non, *, align='center', data=None)
#고유한 값으로 구성된 series 반환하기
x = df['cut'].unique()
#각 고유한 값의 도수로 구성된 series 반환하기
y = df['cut'].value_counts(sort=False)
plt.bar(x, y)
#축 레이블 지정하기
plt.xlable('cut')
plt.ylable('count')
#차트 그리기
plt.show()
3. seaborn.countplot()을 사용해 막대 그래프 정렬하기
#정적인 방식으로 정렬하기
sns.countplot(data=df, x='color', color='tab:blue', order=['G', 'E', 'F', 'H', 'D', 'I', 'J']);
#동적인 방식으로 정렬하기
#'color' 열에 존재하는 고유의 값의 도수를 센 다음 내림차순으로 정렬하기
#series 반환하기
freq = df['cut'].value_counts()
#해당 series의 인덱스 저장하기
gen_order = freq.index
#'generation_id' 도수의 내림차순으로 정렬한 막대 그래프 작성하기
sns.countplot(data=df, x='cut', color='tab:blue', order=gen_order);
728x90
반응형
'코딩공부 > Data analysis' 카테고리의 다른 글
(데이터분석) matplotlib으로 원 그래프 작성하기 (0) | 2024.05.24 |
---|---|
(데이터분석) seaborn의 절대도수와 상대도수 막대그래프 나타내기 (0) | 2024.05.24 |
(데이터분석) 데이터 정제 결과를 시각적 방식과 프로그래밍 방식으로 테스트하기 (0) | 2024.05.21 |
(데이터분석) 파이썬으로 timeseries 시계열 데이터 정제하기 (0) | 2024.05.21 |
(데이터분석) 파이썬으로 텍스트 데이터 정제하기 (0) | 2024.05.20 |