Python/데이터분석(ABC 부트캠프)

[6일차] ABC 부트캠프 / CSV, Matplotlib

않새준 2024. 7. 1. 23:46

2주차에 접어들어 본격적으로 데이터를 분석하기 위한 라이브러리를 학습하기 시작하였다.

 

라이브러리에 대해 학습하기 전 데이터의 표본을 쉽게 구할 수 있는 사이트를 알아보자.

 

기상자료개방포털

날씨! 데이터가 되다 기 상 청 API허브

data.kma.go.kr

 

공공기관에서 데이터를 오픈하여 쉽게 데이터를 얻을 수 있는 사이트들이다.

 

위 기관들에서 배포한 csv파일을 활용하여 데이터 분석에 사용할 수 있다.

 

csv는 표 형식의 데이터를 저장하는 확장자이다.

 

오늘은 파이썬에서 csv 파일을 열고 읽어보는 과정을 수행할 것이다.

 

 


 

 

CSV 라이브러리

 

 

csv라이브러리는 내장 라이브러리 함수가 아니므로 직접 호출이 필요하다.

import csv

 

위 코드로 csv 라이브러리를 우선 호출하여야 한다.

 

해당 라이브러리를 호출하였으면 총 4가지의 절차를 따라야 한다.

  1. 파일을 연다.
  2. 파일을 읽는다.
  3. 파일 내용 출력
  4. 파일 닫기

위 과정을 수행하기 위한 코드는 이러하다.

# 1. 파일을 연다
# 타입은 읽기 및 쓰기, 인코딩 타입은 한글 영어에 따라 상황에 맞게 작성
f = open("파일경로", "타입", "인코딩 타입") 

# 2. 파일을 읽는다
# ','를 기준으로 데이터를 읽는다.
data = csv.reader('f', delimiter=',')

# 3. 파일을 출력한다.
for low in data:
	print(low)
    
# 4. 파일을 닫는다.
f.close()

 

위 절차를 따라 코드를 작성하면 정상적으로 csv파일을 읽어드릴 수 있다.

 

파일을 열때 타입은 읽기와 쓰기가 존재하며 'w'는 쓰기, 'r'은 읽기로 사용된다.

 

또한 인코딩 타입도 여러가지가 있는데, 한국어는 주로 ecu-kr로 되어있고, 영어는 UTF-8로 되어있다.

항상 인코딩 타입을 확인하고 코드를 작성해야 한다.

 

 


 

 

Matplotlib 라이브러리

 

Matplotlib 라이브러리는 데이터 값을 그래프로 표현하기 위해 사용하는 라이브러리이다.

 

우리는 그중에서도 pyplot을 사용할 예정이다.

 

위 라이브러리를 호출하는 과정은 이러하다.

import matplotlib.pyplot as plt

 

코드의 내용은 이러하다.

matplotlib라이브러리의 pyplot 모듈을 호출하고, plt라는 별칭을 사용한다.

 

별칭을 사용하여 코드를 줄여서 사용할 수 있게 되었다.

 

이제 기본 사용방법을 살펴보자.

# 예제 1
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])  # plot(y) : y 값이 주어지면, x값은 자동으로 0부터 1씩 증가한다.
plt.show()

 

plt.plot() 함수는 그래프를 그리는 함수이다.

리스트 형식의 데이터 값을 매개변수로 전달하면 해당 인자를 통한 그래프를 그려준다.

 

위 코드에서는 x값은 입력하지 않았고, y 데이터 값만 입력하였기에 x축의 데이터 값은 자동으로 할당되었다.

 

# 예제 2
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 2, 4, 8])  # (1,1),(2,2),(3,4),(4,8)를 그래프로 나타냄
plt.show()

 

위같이 x와 y 값을 모두 입력하면 위 점선들을 직선으로 연결한 그래프를 그릴 수 있다.

 

실행결과

좌 -> 예제1 / 우 -> 예제2

 

만약 한개의 그래프에 두개 이상의 선을 찍고싶다면 plt.plot()함수를 하나 더 작성하면 된다.

 

import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 2, 4, 8])
plt.plot([1, 2, 3, 4], [8, 4, 2, 1])
plt.show()

 

그럼 두개 이상의 그래프를 그릴 수 있게 된다.

 

실행결과

 

 

 

이제 표를 만들 수 있게 되었다.

 

그렇다면 해당 표의 가시성을 높이는 방법을 알아보자.

 

우선 그래프의 타이틀을 달아보기로 하자.

plt.title("그래프 제목 입력") # 타이틀 속성 추가

 

위와 같은 방식으로 코드를 입력하면 그래프 위 코드의 제목을 생성할 수 있다.

 

다음으로 그래프의 색상과 마커, 라인스타일과 레이블을 지정할 수 있다.

 

그래프의 색상은 말그대로 그래프를 표시할 색을 정하는 것이다. 

아무것도 설정하지 않는다면 처음 그래프는 주황, 다음 그래프는 파랑으로 초기 설정이 될 것이다.

 

그러나 위 예제와 같이 코드를 작성하면 색을 변경할 수 있다.

plt.plot([1, 2, 3, 4], [1, 2, 4, 8], color = '원하는 색')  # 색상 변경

 

위 코드에서는 아까 그렸던 그래프의 색상만 변경하는 코드를 추가한 것이다.

 

color = "원하는 색상" 을 통해 그래프의 색상을 변경할 수 있다.

 

다음은 마커이다.

 

마커는 그래프를 찍기 위한 점을 표기하는 코드이다.

주로 '*' 이나 '^', '.'을 사용하여 마커를 표기한다.

 

plt.plot([1, 2, 3, 4], [1, 2, 4, 8], marker = '^')  # 마커 설정

 

위처럼 표기하면 각 좌표에 '^' 이 표기되었음을 확인할 수 있다.

 

 

 

실행결과

 

 

다음은 라인 스타일이다. 

 

라인 스타일은 이름과 같이 점과 점을 이를 선의 스타일을 정하는 것이다.

 

기본값은 실선으로 그어지지만 '--'을 입력하면 실선이 아닌 점선으로 이어지고 ' '을 입력하면 아무것도 이어지지 않게 된다.

 

이를 활용하면 마커로 좌표를 그래프상에 표시하고 라인 스타일을 ' ' 로 설정하면 좌표만 출력될 뿐 좌표끼리 선으로 이어지지 않는다.

 

# 예제 1
plt.plot([1, 2, 3, 4], [1, 2, 4, 8], linestyle = '--')  # 라인 스타일 설정(점선)

# 예제 2
plt.plot([1, 2, 3, 4], [1, 2, 4, 8], marker = '^', linestyle = '')  # 라인 스타일 설정(좌표만 출력)

 

좌 : 예제1 / 우 : 예제2

 

 

 

마지막으로 레이블을 작성하여 위 그래프를 알려줄 레이블을 설정하는 법을 알아보자.

 

plt.plot([1, 2, 3, 4], [1, 2, 4, 8], label = '레이블명').  # 그래프의 레이블 설정
plt.legend().   # 레이블을 출력하기 위한 메소드

# 예시코드
plt.plot([1, 2, 3, 4], [1, 2, 4, 8], label = 'exam_graph')
plt.legend()
plt.show()

 

label = '레이블명' 위 같은 방식으로 해당 그래프가 무엇을 나타낼지 레이블로 표기해줄 수 있다.

 

또한, 반드시 plt.legend() 메소드를 같이 사용하여야 레이블을 정상적으로 출력할 수 있다.

plt.legend()는 plt.show() 함수와 같이 작성해주면 된다.

 

 

실행결과

 

레이블 예제

 

 

위 방식을 극단적으로 코드를 줄일 수 있다.

아래 코드를 한번 유추해보자.

 

plt.plot([1, 2, 3, 4], 'r.')

 

위 코드는 1, 2, 3, 4를 y값으로 가지고, 선의 색은 빨간색이며 '.' 으로 좌표가 찍힌 그래프가 그려진다.

물론 라인 스타일은 정해지지 않았으므로 좌표 간 선으로 연ㄱ


 

 

히스토그램 

 

히스토그램은 우리가 생각하는 막대 그래프이다.

 

생성하는 방법은 plt.plot() 함수가 아닌 plt.hist() 함수를 사용하며 막대의 갯수를 지정해 주어야 한다.

 

이제는 선으로 연결한 그래프가 아닌 히스토그램이라는 그래프로 작성해보는 방법을 알아보겠다.

 

plt.hist([입력 데이터 리스트], bins='막대 갯수', color='색상')

# 예시
plt.hist([1, 2, 3, 4], bins=10, color='pink')
plt.show()

 

위와 같이 코드를 작성하면 정상적으로 히스토그램을 출력할 수 있게 된다.

 

실행결과

 

히스토그램 출력 예시

 

정상적인 그래프처럼 생기지 않았지만 우리는 히스토그램을 출력하는 예시를 확인해보기 위해 코드를 작성했으므로 데이터 값은 신경쓰지 않도록 하자.

 

위처럼 활용하면 히스토그램을 정상적으로 출력할 수 있게 된다.