평균, 표준편차,중앙값 게산 umpy

hasun·2021년 12월 31일
0

평균

total = 0
count = 0
numbers = input("Enter a number :  (<Enter Key> to quit)")
while numbers != "":
    try:
        x = float(numbers)
        count += 1
        total = total + x
    except ValueError:
        print('NOT a number! Ignored..')
    numbers = input("Enter a number :  (<Enter Key> to quit)")
avg = total / count
print("\n average is", avg)

평균을 구하기 위해서는 숫자들의 총합이 필요할 뿐, 숫자들을 배열,변수로 저장하지 않아도 된다. 그래서 코드에서 숫자를 total 이라는 변수에 계속 할당하고 그 시점 까지의 총합만을 기억해 두었다.

아래처럼 숫자 입력,합산이 반복 시행

total = 0.0
number = float(input("enter the number: "))
total = total + number
number = float(input("enter the number: "))
total = total + number
...

표준 편차

아래 수식은 표준편차를 구하는 공식이다.

여기서 s는 표준편차(std) x는 입력받은 숫자들 n은 입력받은 샘플의 개수

x**{\overline {x}}평균입니다.**

이제는 입력받은 모든 숫자들을 저장해둘 필요가 생겼다.

이럴 때는 데이터 값 전체를 하나의 객체에 순서대로 모아 놓을 수 있어야 사용하기 편리하다

파이썬은 이런 기능을 가진 리스트(list)라는 자료구조를 제공한다.

X라는 변수에 순서대로 저장하는 수학적 표기법

중앙 값

중앙값은 주어진 숫자를 크기 순서대로 배치할 대 가장 중앙에 위치하는 숫자

중앙이라는 위치는 그 숫자의 총합이 홀수이냐 짝수이냐에 따라 달라진다.

ex)

만약 숫자가 1, 3, 3, 6, 7, 8, 9 라면, 중앙값은 6입니다.

만약 숫자가 1, 3, 3, 7, 8, 9 라면, 중앙값은 (3 + 7) / 2 = 5입니다.

즉 총개수 n인 숫자를 순서대로 배열했을때,

n이 홀수 이면 n/2을 반올림한 순서의 값이 중앙값

ex) 위에서는 7/2 = 3.5 반올림 = 4 , 4번째 숫자가 중앙값

n이 짝수라면 n/2번째 값과 ((n/2 +1)번째 값의 중앙값

ex) 위에서는 6/2=3, ((6/2)+1)=4 이므로 3번째 값과 4번째 값이 중앙값이 된다.

중앙값 구하는 코드 구현

def median(nums):  		# nums : 리스트를 지정하는 매개변수
    nums.sort()					# **sort()**로 리스트를 **오름차순** 순서대로 정렬
    size = len(nums)
    p = size // 2
    if size % 2 == 0:		   # 리스트의 개수가 짝수일때 
        pr = p                         # 4번째 값
        pl = p-1                      # 3번째 값
        mid= float((nums[pl]+nums[pr])/2)    
    else:								# 리스트의 개수가 홀수일때
        mid = nums[p]
    return mid

print('X :', X)
median(X)						# 매개변수의 값으로 X를 사용함

Numpy는 Numerical Python 줄임말로, 과학 계산용 고성능 컴퓨팅과 데이터 분석에 필요한 파이썬 패키지

파이썬 기본 패키지 관리자인 pipdksdpsms NumPy가 없으므로 새로 설치

기본적으로 포함 되어 있기도 하지만

**conda list , grep numpy 명령어로 설치여부 확인**

**pip install numpy 설치 명령어**

Numpy의 장점

  1. 빠르고 메모리를 효율적으로 사용하여 벡터의 산술연산과 브로드캐스팅 연산을 지원하는 다차원 배열 ndarray 데이터 타입 지원
  2. 반복문을 작성할 필요 없이 전체 데이터 배열에 대한 빠른 연산을 제공하는 다양한 표준 수학 함수 제공
  3. 배열 데이터를 디스크에 쓰거나 읽을 수 있다. (파일로 저장한다는 뜻)
  4. 선형대수, 난수발생기, 푸리에 변환가능, C/C++포트란으로 쓰여진 코드를 통합

Numpy를 사용하기 위해 **ndarray** 객체를 만들어야 한다.

ndarray 객체를 이용하면 파이썬에서 사용하는 대규모 데이터 집합을 n차원 배열로 담을 수 있다.

ndarray 만들기

import numpy as np

A = np.arange(5)
# [0 1 2 3 4]

B = np.array([0,1,2,3,4])
# [0 1 2 3 4]

C = np.array([0,1,2,3,'4'])
# ['0' '1' '2' '3' '4']

C의 경우 ‘4’가 하나 들어갔을 뿐인데 0,1,2,3 모두 문자열로 바뀌었다.

numpy.array도 array이므로 모든 요소 타입을 동일해야 한다.

**문자열을 모두 숫자로 바꿀 수는 없지만 숫자는 모두 문자열로 바꿔 줄 수 있다.**

그래서 숫자만 있던 ndarray에 문자열이 들어가면 모든 숫자를 문자열로 해석해서 array요건을 맞춰준다.

의도가 이런게 아니었다면 예상치 못할 부작용 생길 수 있으니 유의

크기 함수

  1. ndarray.size / 행렬 내 원소의 개수
  2. ndarray.shape / 행렬의 모양
  3. ndarray.ndim / 행렬의 축 개수
  4. reshape() / 행렬의 모양을 바꿔준다. 주의할 점은 모양을 바꾸기 전후 행렬의 총 원소 개수(size)가 맞아야 한다.
profile
내가 얻는 보상은 내가 제공하는 가치와 비례한다.

0개의 댓글