맷플롯립을 이용한 데이터 시각화

JOOYEUN SEO·2024년 12월 17일

100 Days of Python

목록 보기
73/76
post-thumbnail

🗂️ Day73 프로젝트: 시간 흐름에 따른 개발 언어 인기도

스택 오버플로우에서 가장 많은 게시물에 태그된 프로그래밍 언어가 무엇인지 분석하기

1. 예비 데이터 탐색

🔍 유의 사항

  • .csv 파일을 읽고, 파일을 df라는 판다스 데이터프레임 안으로 저장
    • 열의 이름을 'DATE', 'TAG', 'POSTS' 으로 설정
    • 헤더 행을 0으로 설정하면 열 자체의 이름으로 대체 가능
  • 처음과 마지막 5개 행 확인 (열 이름이 제대로 설정됐는지 체크)
  • 행과 열 개수 확인
  •  .count() 메소드로 각 열의 NaN이 아닌 항목의 개수 계산

2. 개발 언어 분석

🔍 유의 사항

  • 스택 오버플로우가 만들어진 이후 가장 많은 수의 게시물을 보유한 개발 언어 찾기
    • TAG 열은 개발 언어의 이름
    •  .groupby() 메소드와  .sum() 메소드로 각 개발 언어의 게시물 개수 총합 계산
  • 각 개발 언어당 게시물이 몇 개월간 존재하는지 세기
    •  .count() 메소드로 각 열의 항목 세기

3. 데이터 정리: 타임스탬프 작업

🔍 유의 사항

  • 개별 셀을 선택하는 방법 2가지 ('DATE' 열의 2번째 항목)
    • df['DATE'][1]
      • . 표기법보다 유연성이 있는 것이 장점
    • df.DATE[1]
      • 열 이름에 공백이 없는 경우에만 사용 가능
      • 자동완성 기능이 있어서 편리
  • 개별 셀의 데이터 유형을 검사하는 방법
    • type(개별 셀을 선택하는 방법)
  •  to_datetime() 메소드로 문자열을 타임스탬프로 변환
    • 'DATE' 열 전체를 새 값으로 덮어씌워야 한다
    • 잘 변환됐는지 확인하기

4. 데이터 조작: 데이터프레임 피벗

🔍 유의 사항

  • 각 행이 날짜가 되고, 각 열이 개발 언어가 되도록 데이터프레임 피벗하기
  •  .pivot() 메소드로 데이터프레임을 주어진 인덱스, 열 값을 이용헤 재구성 (변수에 저장해야 함)
    • 값이 누락된 항목에는 자동으로 NaN 값이 들어감
    • 인자
      • 인덱스(index) : 의 범주
      • 열(columns) : 의 범주
      • 값(values) : 새로운 셀에서 원하는 것
  • 재구성된 데이터프레임의
    • 크기 확인(행과 열 개수)
    • 열 이름 출력
    • 첫 5행 확인
    • 각 열의 항목 수 계산
      • .count() 메소드가 NaN 값을 제외하기 때문에 모든 언어가 다르게 나옴
      •  .fillna() 메소드로 NaN 값을 숫자 0으로 변경
      • .isna()values 속성 any() 메소드를 연결하여 NaN 값의 여부를 불리언 값으로 반환

5. 맷플롯립으로 데이터 시각화

🔍 유의 사항

  • 맷플롯립(Matplotlib) 라이브러리로 차트 생성
    • 문서 참조
    •  .plot() 메소드의 가로축(x값)에 날짜, 세로축(y값)에 게시물 수를 넣기
  • 차트 스타일 지정
    •  .figure()
      • 차트 사이즈 조정
      • figsize 인자에서 (너비, 높이) 값을 설정
    •  .xticks(),  .yticks()
      • x축 구성, y축 구성
      • 차트 크기를 조정했다면 축에 있는 눈금의 글자 크기 fontsize 도 같이 맞춰야 가독성이 좋음
    •  .xlabel(),  .ylabel()
      • x축에 텍스트 추가, y축에 텍스트 추가
    •  .ylim()
      • (y축) 상한 및 하한 설정
      • 게시물 수는 0 밑이 될 수 없으므로 y축의 최저를 0으로 설정

6. 맷플롯립을 이용한 다중 선형 차트

🔍 유의 사항

  • 2개의 개발 언어를 한 차트에 표시
    • .plot() 메소드를 2번 호출하면 됨
  • 모든 개발 언어를 한 차트에 표시
    • for루프 활용하기
    • .plot()에서 매개변수 설정
      • linewidth 로 선을 더 굵게 지정
      • label 로 각 줄에 이름(개발 언어)을 설정
    •  .legend() 메소드로 그래프에 범례 추가
      • .plot()에서 설정한 레이블을 수집하여 범례로 사용
      • 그래프 오른쪽 위(기본 위치)에 범례가 나타나고, 각 라인의 색상과 이름이 표시됨

7. 시계열 데이터 다듬기

🔍 유의 사항

  • 앞의 차트처럼 시계열 데이터가 심하게 오르락 내리락 할 경우 흐름을 파악하기 힘듦
  • 평균을 취하여 관측치를 평균화하는 기술로 추세를 명확히하기
    • 6개 또는 12개의 관측값을 평균화하여 이동평균을 구성
    • 기본적으로 시간 단위로 평균을 계산하고 한번에 한 관측값씩 앞으로 이동
  •  .rolling() 메소드에  .mean() 메소드를 연결하여 평균 관측값으로 구성된 데이터프레임 생성
    • .rolling()의 window 매개변수로 한 번에 그룹으로 처리할 데이터의 개수를 지정
      • 6일 경우 현재 값과 이전 5개의 값을 사용하여 계산한다는 것
      • 3, 12 등 다양한 숫자를 넣어 차트의 변화 확인하기
    • .mean()은 각 윈도우에 대해 평균을 계산 = 이동 평균을 생성




▷ Angela Yu, [Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복], Udemy, https://www.udemy.com/course/best-100-days-python/?couponCode=ST3MT72524

0개의 댓글