파이썬

[250318] 데이터 시각화 + 파이썬 입문 과제

jeonieee 2025. 3. 18. 21:40

- 데이터 시각화

Matplotlib : 시각화를 위한 라이브러리

import matplotlib.pyplot as plt

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 선 그래프 그리기
plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Example Plot')
plt.show()
  • pandas의 plot() 메서드는 DataFrame 객체에서 데이터를 시각화하는데 사용됩니다. 
  • 예를 들어, 선 그래프를 그리기 위해서는 plot() 메서드를 호출하고 x와 y 인수에 각각 x축, y축에 해당하는 열을 지정
import pandas as pd
import matplotlib.pyplot as plt

# 샘플 데이터프레임 생성
data = {
    'A': [1, 2, 3, 4, 5],
    'B': [5, 4, 3, 2, 1]
}
df = pd.DataFrame(data)

# 선 그래프 그리기
df.plot(x='A', y='B')
plt.show()
  • 스타일 지정
    • Color(색상) : 문자열로 지정할 수 있으며, 'blue', 'green', 'red', 'cyan', 'magenta', 'yellow', 'black', 'white'와 같은 기본 색상 이름 또는 RGB 값을 직접 지정할 수 있습니다.
    • Linestyle(선 스타일) : 선의 스타일은 '-'(실선), '--'(대시선), ':'(점선), '-.'(점-대시선) 등으로 지정할 수 있습니다.
    • Marker(마커) : 데이터 포인트를 나타내는 기호로, 'o'(원), '^'(삼각형), 's'(사각형), '+'(플러스), 'x'(엑스) 등 다양한 기호로 지정할 수 있습니다.
    • 범례 : legend() 메서드를 사용하여 그래프의 범례를 추가
    • 축, 제목 입력하기 : set_xlabel(), set_ylabel(), set_title() 메서드를 사용하여 x축과 y축의 레이블 및 그래프 제목을 추가
    • 텍스트 추가하기 : text() 메서드를 활용하여 그래프에 특정 위치에 텍스트를 추가할 수 있다
import matplotlib.pyplot as plt

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 그래프 그리기
plt.plot(x, y, color='green', linestyle='--', marker='o', label='Data Series')

# 추가 설정
plt.xlabel('X-axis Label')
plt.ylabel('Y-axis Label')
plt.title('Title of the Plot')
plt.legend()
plt.text(3, 8, 'Some Text', fontsize=12)  # 특정 좌표에 텍스트 추가

# 그래프 출력
plt.show()
  • 그래프 크기 조정
    • plt.figure() 함수를 사용하여 Figure 객체를 생성하고, 이후에 figsize 매개변수를 이용하여 원하는 크기로 설정할 수 있음
    • figsize는 그래프의 가로, 세로 크기를 인치 단위로 설정
import matplotlib.pyplot as plt

# Figure 객체 생성 및 사이즈 설정
plt.figure(figsize=(8, 6))  # 가로 8인치, 세로 6인치



# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 그래프 그리기
plt.plot(x, y)

# 그래프 출력
plt.show()

 

- 그래프 그리기

  • 그래프 유형 자료 유형 특징
Line Plot 연속형 데이터 데이터의 변화 및 추이를 시각화
Bar Plot 범주형 데이터 카테고리 별 값의 크기를 시각적으로 비교
Histogram 연속형 데이터 데이터 분포, 빈도, 패턴 등을 이해
Pie Chart 범주형 데이터의 비율 범주별 상대적 비율을 부채꼴 모양으로 시각화
Box Plot 연속형 데이터의 분포 중앙값, 사분위수, 최소값, 최대값, 이상치 확인
Scatter Plot 두 변수 간 관계 변수 간의 관계, 군집, 이상치 등 확인

 

  • Line Plot : 주로 시간의 흐름에 따른 데이터의 변화
  • Bar Plot : 범주형 데이터 간의 비교를 나타낼 때 주로 사용
  • Histogram : 연속형 데이터의 분포를 보여줄 때 사용
  • 바 vs 히스토그램
    • 그래프 비교
    • 막대 그래프는 주로 범주형 데이터의 값을 비교하는데 사용되고, 히스토그램은 연속적인 데이터의 분포를 시각화하는 데 사용  
      구분 막대 그래프  히스토그램
      데이터 유형 범주형 데이터 비교 연속적 데이터 분포
      막대 형태 수직 or 수평 막대 (크기) 막대가 붙어있는 형태 (빈도)
      시각화 유형 해당 범주의 크기를 나타냄 X축은 데이터 값의 범위를,
      Y축은 해당 범위에서의 빈도를 나타냄
      예시 팀별 판매량, 국가별 GDP 등을 비교 시험 점수 분포, 온도 변화 등
      연속적인 데이터의 분포
  • Pie Chart : 범주형 데이터의 상대적 비율을 시각화
  • Box Plot : 데이터의 분포와 이상치를 시각적으로 보여줍니다. 중앙값, 사분위수, 최솟값, 최댓값 등의 정보를 제공하여 데이터의 통계적 특성을 파악하는 데 사용
    1. 상자(Box): 데이터의 중앙값과 사분위수(25%와 75%)를 나타냅니다. 상자의 아래쪽 끝은 25%의 값(1사분위수), 상자의 윗쪽 끝은 75%의 값(3사분위수)을 나타냅니다. 상자의 중앙에 위치한 선은 중앙값을 나타냅니다.
    2. 수염(Whisker): 상자의 위 아래로 연장되는 선으로, 일반적으로 1.5배의 사분위 범위로 계산되는데, 이 범위를 넘어가는 값은 이상치(outlier)로 간주됩니다. 수염의 끝은 최솟값과 최댓값을 나타냅니다.
    3. 이상치(Outliers): 수염 부분을 벗어나는 개별 데이터 포인트로, 일반적인 범위를 벗어나는 값들을 의미합니다. 이상치는 박스 플롯에서 독립적으로 표시됩니다.
  • Scatter Plot(산점도) : 두 변수 간의 관계를 점으로 표시하여 보여주는 그래프

- 파이썬 입문 과제

1. 기본 변수 할당과 산술 연산

  • 변수 x에 값 10을 할당하고, x를 2배로 곱한 후 5를 뺀 값을 출력하세요.
x = 10
x = x*2-5
print(x)

2. 문자열 조작

mean = 30

std = 10

  • 어떤 데이터를 분석하여 평균과 표준편차를 각각 mean, std 변수에 담았다고 가정해 보겠습니다.
  • 포맷팅을 활용하여 "A데이터의 평균은 30, 표준편차는 10 입니다"를 출력하세요
    • f스트링 쓸때는 f 쓰고 " " 꼭 해주고 변수를 넣을 때는 { 중괄호 } 써야함
print(f"A데이터의 평균은 {mean}, 표준편차는 {std}입니다")

3. 리스트

  • 인덱싱 혹은 슬라이싱 기능을 이용하세요.
  • 아래 리스트에서 앞에서부터 5번째 숫자까지는 front라는 변수에 담고
  • 나머지 뒤에 있는 1개 숫자는 back이라는 변수에 담고 각각 출력하세요
    • 슬라이싱 할때는 [ 대괄호 ] 써야함
  • numbers = [1, 3, 5, 7, 9, 11]
front = numbers[ : 5]
back = numbers[-1]
print(front)
print(back)

4. 딕셔너리

  • 아래의 표를 보고 Math, English, Physics를 각각 key로 보고, 해당 열의 값들을 value로 되어 있는 딕셔너리를 만들고 출력하세요
    • 딕셔너리로 만들땐 문자는 ' 따옴표 ' 해줘야 하고, 값들은 [ 대괄호 ] 써줘야 함

 

score = {'Math' : [85, 80, 95], 'English' : [92, 98, 56], 'Physics' : [78, 55, 38]}
print(score)

5. 반복문

  • 주어진 리스트의 모든 요소에 대해 제곱한 값을 출력하는 for 루프를 작성하세요.
  • numbers = [1, 2, 3, 4, 5]
for i in numbers :
    print(i**2)

6. 조건문

  • 아래와 같이 정수가 주어졌을 때 짝수면 "Even"을 출력하고 홀수면 "Odd"를 출력하는 프로그램을 작성하세요.
  • number = 30
if number % 2 == 0 : print("Even")
else : print("Odd")

7. 조건문 & 반복문

 

  • 아래 리스트에 있는 요소들을 하나씩 꺼내서 그 값이 양수이면 "Positive", 음수이면 "Negative", 0이면 "Zero"를 출력하는 프로그램을 작성하세요.
    • 반복문은 for 쓰면 되고 무조건 if, elif, else 뒤에는 : 붙어야함
  • num_list = [1,30, -5, 0, 11, -100]
for num in num_list : 
  if num > 0 : print("Positive")
  elif num < 0 : print("Negative")
  else : print("Zero")

8. 함수정의

  • 아래 리스트를 받아서 리스트에 있는 값들로 평균을 계산하여 평균값을 반환하는 함수를 정의하세요.
    • 파이썬에서 평균은 sum / len 임 !!!
  • num_list = [1,30, -5, 0, 11, -100]
num_avg = sum(num_list)/len(num_list)
print(num_avg)

9. 리스트 응용

  • 주어진 리스트에서 5보다 큰 수들만 골라서 새로운 리스트에 담고 새로운 리스트를 출력하세요
    • 새로운 리스트를 짜서 num은 numbers에 있는 num 중에서 5보다 큰거로 담는다
    • 리스트는 [ 대괄호 ] 안에 들어가 있어야함
  • numbers = [1, 3, 5, 7, 9, 11]
new_list = [num for num in numbers if num > 5]
print(new_list)

10. 파이썬 에러 확인

  • 다음 계산에서 에러가 발생합니다. 왜 에러가 뜨는지 기술하고 이를 해결하기 위한 방법을 제시하세요.
  • a = 10
    b = 0
    print(a/b)
    ---------------------------------------------------------------------------
    
    ZeroDivisionError                         Traceback (most recent call last)
    <ipython-input-16-0ca4df5e1f05> in <cell line: 3>()
          1 a = 10
          2 b = 0
    ----> 3 print(a/b)
    ZeroDivisionError: division by zero

     

    - b가 0이라 zerodivisionerror가 뜬다

    - b에 0이 아닌 다른 값을 넣으면 된다. 

     

킬킬킬 자격증 공부 시간에 과제하기...