본문 바로가기

python 시작하기

Python 데이터 시각화

728x90
반응형

지금까지 데이터를 가져왔습니다.

근데 이제 숫자로만 데이터를 분석하거나 판단하면, 아 생각만해도 머리와 눈이 아파오네요..

그래서 저희는 데이터를 그래프로 만들어 데이터를 시각화 할 것입니다.

데이터 시각화

  • 그래프, 차트, 다이어그램 등 다양한 시각화 도구를 사용하여 데이터를 시각적으로 표현한 것
  • 데이터 시각화는 복잡한 데이터 집합을 직관적이고 이해하기 쉬운 형태로 변환하여 데이터의 패턴, 추세, 상관 관계 등을 파악하는데 유리함

목적

  • 데이터의 패턴과 추세 파악 : 시각화를 통해 데이터의 패턴, 추세, 이상치 등을 식별하고 분석
  • 데이터 간 관계 이해 : 다양한 변수 간의 관계와 상관 관계를 시각적으로 이해
  • 인사이트 도출 : 시각화를 통해 데이터에서 의미 있는 인사이트와 통찰력을 도출

그럼 이렇게 데이터를 시각화 하려면 어떻게 해야 할까요?

매트랩을 사용해보신 분들은 익숙한 이름처럼 들린 것입니다. Matplotlib이라는 모듈을 사용합니다.

Matplotlib 

  • 파이썬에서 가장 널리 사용되는 데이터 시각화 라이브러리
  • 그래프, 차트, 플롯 등 다양한 시각화 요소를 생성하고 데이터를 시각적으로 나타낼 수 있습니다.
 

Matplotlib — Visualization with Python

seaborn Cartopy DNA Features Viewer plotnine WCS Axes seaborn seaborn is a high level interface for drawing statistical graphics with Matplotlib. It aims to make visualization a central part of exploring and understanding complex datasets. statistical data

matplotlib.org

 

간단한 1차 그래프를 그려봅시다.

실습 (그래프 그리기)

  • pip install matplotlib 로 모듈을 설치해 줍니다.
  • import matplotlib.pyplot as plt (pyplot : 맷플롯립의 기능을 간편하게 사용할 수 있는 함수제공)
  • plt.plot(x 좌표, y 좌표,[옵션 매개변수]) : 그래프그리기
  • plt.show() : 그래프 표시
  • x = [1,2,3,4,5] , y = [1,2,3,4,5]

 

이런식으로 가져온 데이터를 시각화하는 것입니다.

근데 이제 범례 표시와 x축, y축 타이틀 그래프 타이틀을 설정하여야 하는데 이때 쓰는 메서드는

  • plt.title("타이틀 명")
  • plt.label : 범례 표시 명 , plt.legend() 함수 필수
  • plt.legend()
    • loc : 위치(예 : loc = "upper center")
    • title : 범례명
    • frameon : 박스표시 여부
    • fontsize : 범례 텍스트 크기

어라 뭔가 이상하죠 한글이 깨집니다.

이 이유는 VS코드에는 한글 폰트가 없기 때문입니다.

그러니 저희는 한글 폰트를 불러와야만 사용할 수 있습니다.

 

다음과 같은 순서로 한글을 설정할 수 있습니다.

  • from matplotlib import font_manager
  • font_list = font_manager.findSystemFonts(fontpaths = None, fontext = 'ttf')
  • print(font_list) 에서 마음에 드는 폰트의 경로를 찾습니다.
  • path = "주소.ttf"
  • font = font_manager.FontProperties(fname = path).get_name()
  • plt.rc('font', famliy = font)

다음과 같이 설정한 후 다시 출력해 봅시다.

 

자 이제 한글 폰트가 제대로 나오는 것을 확인 가능합니다.

하지만 만약에 그래프에 특정 포인트나 선의 두께를 더키우고 싶죠? 그럼 그래프를 좀 꾸며 봅시다.

  • color : 그래프 색상 (예: color = "red" or "r")
  • linestyle : '-', '- -' 등 선 스타일
 

Linestyles — Matplotlib 3.9.3 documentation

Linestyles Simple linestyles can be defined using the strings "solid", "dotted", "dashed" or "dashdot". More refined control can be achieved by providing a dash tuple (offset, (on_off_seq)). For example, (0, (3, 10, 1, 15)) means (3pt line, 10pt space, 1pt

matplotlib.org

  •  linewidth : 선 두께 (예: linewidth = 2)
  • marker : 마커생성 (예: 'o', 's', '*')
 

matplotlib.markers — Matplotlib 3.9.3 documentation

matplotlib.markers Functions to handle markers; used by the marker functionality of plot, scatter, and errorbar. All possible markers are defined here: Note that special symbols can be defined via the STIX math font, e.g. "$\u266B$". For an overview over t

matplotlib.org

  • makersize : 마커크기 변경
  • markerfacecolor : 마커 내부 색상 변경
  • markeredgecolor : 마커 외곽선 색상 변경

 

  • pad : 타이틀과에 간격을 지정할 수 있습니다.
  • fontdict : 폰트 꾸미기
  • fontsize : 폰트 크기
  • labelpad : x축 y축 label에 간격을 정할 수 있다.
  • grid(True, axis, [옵션]) : 격자 생성

 

이제 보면 그래프가 그려질때 축이 애매하게 끊길때가 있습니다. 또는 기준치를 초과하는지 알고 싶을때 한계를 정하는 방법이 있습니다.

축 범위 설정

  • xlim([xmin, xmax]) : x축 범위 설정
  • ylim([ymin, ymax]) : y축 범위 설정
  • axis("equal") : x축과 축을 동일하게 유지
  • axis("scaled") : 데이터의 비율에 따라 축 스케일 설정
  • axis("tight") : 데이터가 그래프의 모든영역을 채우도록 설정
  • axis("auto") : 자동을 축설정

 

이제 우리는 그래프 여러개 표시하는 법을 학습해 봅시다!!

솔직히 하나의 그래프가지고는 비교할 수있는 데이터는 한계가 너무 분명함으로, 여러개의 그래프를 동시에 비교해볼수 있어야 겠죠?

그래프 여러개 표시

  • subplot(nrows, ncols, index)
    • nrows : 전체 플롯이 배치될 행(row)개수
    • ncols : 전체 플롯이 배치될 열(column)개수
    • index : 플롯이 배치될 위치 (왼쪽에서 오른쪽, 위에서 아래로 번호 매김)
  • tight_layout() : 간격 조정
  • suptitle() : 전체 그래프의 제목

subplot 사용 전후

오늘은 여기까지 선그래프를 시각화 하는 방법을 배웠습니다.

이제 마무리 실습과 함께 포스팅을 마치겠습니다.

실습(그래프 그리기)

  • month = ['Jan','Feb','Mar','Apr','May','Jun','Jly','Aug','Sep','Oct','Nov','Dec']
  • sales_2019 = [100, 120, 140, 110, 130, 150, 160, 170,180,200, 190, 210]
  • sales_2020 = [90,110,130,120,140,150,170,160,150,180,200,190]
  • 위 그래프를 자신이 원하는대로 꾸며서 표현해주세요.

결과 화면
해답 예시

다음 시간에는 막대그래프와 히스토그램 도넛그래프등등 공부합시다.

오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

반응형

'python 시작하기' 카테고리의 다른 글

python seaborn을 이용한 데이터 시각화  (0) 2024.12.18
Python 데이터 시각화 (2)  (1) 2024.12.17
python Pandas  (2) 2024.12.15
Python Numpy  (4) 2024.12.14
Python 웹 자동화  (1) 2024.12.12