-
[2월 1주차-2/6(1)]📊 Python 데이터 시각화 & CSV 데이터 처리 정리Why Not SW CAMP 5기/수업 기록 2025. 2. 6. 12:01
이번 포스트에서는 Python을 활용한 데이터 시각화(Matplotlib)와 CSV 데이터 처리(csv 모듈)에 대해 정리해보겠습니다.
Matplotlib을 활용하여 다양한 그래프를 그리는 방법과, CSV 데이터를 읽고 처리하는 방법을 함께 알아볼게요!
🖼️ 1. Matplotlib을 이용한 그래프 시각화
🔹 기본 그래프 (plot)
Matplotlib의 pyplot 모듈을 이용하면 간단한 그래프를 쉽게 그릴 수 있습니다.
import matplotlib.pyplot as plt # y값만 입력하면 자동으로 x값은 0부터 순차적으로 생성됨 plt.plot([10, 20, 30, 40]) plt.show()
✅ x값을 명시적으로 지정할 수도 있습니다.
plt.plot([1,2,3,4], [12,43,25,15]) # (x값, y값) plt.show()
🔹 그래프 스타일 적용 (색상 & 범례)
Matplotlib에서는 그래프 색상을 지정하고, 범례(legend)를 추가할 수 있습니다.
plt.title('legend & color') plt.plot([10,20,30,40], color='skyblue', label='skyblue') plt.plot([40,30,20,10], color='pink', label='pink') plt.legend() # 범례 추가 plt.show()
🔹 선 스타일 및 두께 조정
선 스타일을 변경할 때는 linestyle(ls)과 linewidth(lw) 속성을 사용합니다.
plt.title('linestyle') plt.plot([10,20,30,40], color='r', linestyle='--', label='dashed') plt.plot([40,30,20,10], color='g', linestyle=':', label='dotted') plt.legend() plt.show()
🔹 마커 스타일 적용
그래프에 점을 강조하고 싶을 때는 마커(marker) 스타일을 사용할 수 있습니다.
plt.plot([10,20,30,40], 'r.', label='circle') # 원형 마커 plt.plot([40,30,20,10], 'g^', label='triangle up') # 삼각형 마커 plt.legend() plt.show()
🔹 figure()을 활용한 그래프 틀 생성
plt.figure() plt.show()
📈 2. NumPy를 활용한 더미 데이터 생성 및 시각화
🔹 NumPy sin() 그래프
import numpy as np t = np.arange(0, 10, 0.01) # 0부터 10까지 0.01 간격 y = np.sin(t) plt.figure(figsize=(10,6)) # 그래프 크기 설정 plt.plot(t, y, label='sin') plt.plot(t, np.cos(t), lw=3, label='cos') # 선 두께 설정 plt.grid() plt.legend() plt.xlabel('time') plt.ylabel('Amplitude') plt.title('Sample Sin Graph') plt.xlim(0, np.pi) # x축 범위 지정 plt.ylim(-1.2, 1.2) # y축 범위 지정 plt.show()
🔹 다양한 모양의 그래프 그리기
t = np.arange(0, 5, 0.5) plt.figure(figsize=(10,6)) plt.plot(t, t, 'r--') # 빨간색 점선 plt.plot(t, t**2, 'bs') # 파란색 정사각형 plt.plot(t, t**3, 'g^') # 초록색 삼각형 plt.show()
✅ 그래프 스타일을 한 번에 지정하는 방법도 있습니다.
t = [0,1,2,3,4,5,6] y = [1,4,5,8,9,5,3] plt.figure(figsize=(10,6)) plt.plot(t, y, color='green', linestyle='dashed', marker='o', markerfacecolor='blue', markersize=20) # 파란색 동그라미 마커 plt.show()
🔵 3. 산점도 그래프 (scatter)
산점도 그래프는 개별 데이터의 분포를 시각화하는 데 유용합니다.
t = np.array([0,1,2,3,4,5,6,7,8,9]) y = np.array([9,8,7,9,8,3,2,4,3,4]) colormap = t # 색상을 데이터 값에 따라 다르게 설정 plt.figure(figsize=(10,6)) plt.scatter(t, y, marker='>', s=50, c=colormap) # 마커 모양 '>' plt.colorbar() # 컬러바 추가 plt.show()
📂 4. CSV 데이터 처리 (csv 모듈)
Python의 csv 모듈을 사용하면 CSV 파일을 쉽게 읽고 쓸 수 있습니다.
🔹 CSV 파일 읽기 (csv.reader())
import csv f = open('./data/seoul.csv', 'r', encoding='cp949') data = csv.reader(f, delimiter=',') # ','를 기준으로 데이터 분리 print(data) # <_csv.reader object at 0x...>
✅ CSV 데이터를 리스트로 변환하는 방법
seoul_list = [] for row in data: seoul_list.append(row) # 2차원 리스트로 저장 f.close()
🔹 CSV 파일 헤더 제거 (next())
CSV 파일을 분석할 때, 첫 번째 행(헤더)을 제외하고 데이터를 처리하려면 next()를 사용합니다.
f = open('./data/seoul.csv') data = csv.reader(f) header = next(data) # 첫 번째 행(헤더) 제거
🔹 결측치 처리
CSV 데이터에서 결측치를 처리하는 방법은 여러 가지가 있습니다.
- 결측치를 삭제한다.
- 결측치를 특정 값(최대값, 최소값, 평균값)으로 대체한다.
max_temp = -999 # 임의의 최소값 설정 max_date = '' seoul_list_noheader = [] for row in data: if row[-1] == '': # 최고기온 데이터가 비어있다면 row[-1] = max_temp # 기본값으로 대체 row[-1] = float(row[-1]) # 실수로 변환 if max_temp < row[-1]: # 최대 기온 업데이트 max_date = row[0] max_temp = row[-1] seoul_list_noheader.append(row) f.close() print(f'기온이 가장 높았던 날은 {max_date}로, {max_temp}도 였습니다.')
✨ 정리
기능 코드
기본 선 그래프 plt.plot() 그래프 스타일 변경 color, linestyle, marker Numpy를 이용한 데이터 생성 np.arange(), np.sin(), np.cos() 산점도 그래프 plt.scatter() CSV 파일 읽기 csv.reader() CSV 데이터 정리 next(), 결측치 처리 이제 Matplotlib과 CSV 데이터 처리를 활용하여 다양한 데이터를 분석하고 시각화할 수 있습니다! 🎉
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[2월 1주차-2/6(3)]📊 히스토그램 & 박스플롯 시각화 정리 (0) 2025.02.06 [2월 1주차-2/6(2)]🎂 내 생일의 기온 변화를 시각화하기 (0) 2025.02.06 [2월 1주차-2/5(2)]서울시 구별 CCTV 현황 분석하기 📊 (2) 2025.02.05 [2월 1주차-2/5(1)]Pandas 기초: 데이터 분석을 위한 필수 라이브러리 (0) 2025.02.05 [2월 1주차-2/4]📌 파이썬: 함수, 모듈, 클래스 정리 (0) 2025.02.04