데이터분석 기초 | Numpy 넘파이 설치 | Numpy 데이터 타입(.dtype) 종류 정리, 데이터 타입 변환(.astype) | Numpy 난수(.rand / .randn / randint) 생성 | Numpy 함수(percentil, cumsum, cumprod 등) | Numpy 집합 관련 함수

    728x90

     

    1. Numpy(넘파이) 기본

     

    1. 대수, 행렬, 통계 등 수학 및 과학연산을 위한 라이브러리
    2. ndarray 라는 다차원 배열을 데이터로 나타내고 처리하는데 특화
    3. 파이썬의 기본 List에 비해 실행속도가 빠르고 짧고 간결한 코드 구현이 가능
    4. Numpy는 외부 라이브러리이므로, 설치 후 사용

     


    2. Numpy 설치

    pip install numpy
    import numpy as np   
    # 에러 안 나면 정상적으로 설치 된 것

     

    ▶ Numpy 버전 확인

    print(np.__version__)

     

    ▶ Numpy 업그레이드 / 다운그레이드

    pip install numpy -- upgrade   # 업그레이드
    pip install numpy == 1.20      # 특정 버전으로 업그레이드/다운그레이드 가능

     


    3. Numpy 활용 기본

     

    ▶ Numpy 패키지의 배열을 사용하는 이유

       1. 리스트: 서로 다른 타입의 값을 변수에 담을 수 있음 ↔  배열: 담겨진 모든 값이 같은 타입
       2. 리스트: 데이터수가 변경됨 ↔ 배열: 데이터 수를 변경 할 수 없음

     

    ▶ .array() 

    : 파이썬 리스트처럼 순차형 객체를 넘겨받아 새로운 넘파이 배열 생성

     

    * 1차원 배열

    data1 = [1, 2, 2.5, 3, 4]       
    array1 = np.array(data1)
    print(array1)
    
    # [1, 2, 2.5, 3, 4]

     

    * 2차원 배열

    data2 = [[1,2,3,4,5], [6,7,8,9,10]]
    array2 = np.array(data2)
    print(array2)
    
    # [[1,2,3,4,5]
    # [6,7,8,9,10]]

     

    ▶ .arange()

    : 파이썬의 range()함수와 비슷한 기능을 하는 함수

     

    * 매개변수에 배열 개수만 지정해서 생성하기

    np.arange(10)
    
    # [0,1,2,3,4,5,6,7,8,9]

     

    * np.arange(시작값, 종료값, 단계지정)

    np.arange(5, 30, 3)
    
    # array([5,8,11,14,17,20,23,26,29]
    # 5 ~ 29 사이의 숫자에 +3을 한 숫자들을 출력한 결과

     

     

    ▶ .ndim(2차원 배열) / shape(배열의 크기)

    print(array2.ndim)   
    print(array2.shape)
    
    # 2
    # (2,5)  # 2차원 배열, 원소 5개

     

    ▶ .zeros() / .ones()

    : .zeros()는 지정한 길이나 모형에 맞추어 0을 채운 배열   

    : .ones()는 1로 채운 배열

     

    * np.zeros( )

    np.zeros((5,10))

     

    * np.ones( )

    np.ones((2, 3, 8))

     


    4. 데이터타입 변환

     

    ▶ .dtype

    : Numpy에서 행렬의 data type을 알아보기 위해 사용하는 함수

    print(array1.dtype)  
    print(array2.dtype)
    
    # float64
    # int32

     

    * data type 정리

    i integer 정수
    b boolean True or False
    u unsigned integer 자연수(0도 포함)
    f float 실수
    c complex float 복소수(파이썬 허수 >>  j )
    M datetime 날짜
    S string  
    U unicode string  

     

    dtype 종류 dtype 코드  설명
    int8 i1 부호가 있는 8비트(1byte) 정수형
    int16 i2 부호가 있는 16비트 정수형
    int32 i4 부호가 있는 32비트 정수형
    int64 i8 부호가 있는 64비트 정수형
    float16 f2 반정밀도 부동소수점수(실수)
    float32 f4 또는 f 단정밀도 부동소수점수(실수)
    float64 f8 또는 d 배정밀도 부동소수점수(실수), 파이썬의 float객체와 호환됨
    float128 f16 또는 g 확장 정밀도 부동소수점수(실수)
    bool ? True 또는 False 값을 갖는 불리언형
    object 0 파이썬 객체형
    string_ S 고정된 길이의 아스키 문자열형 (각 문자는 1byte)

     

     

     data type 변환 _  'dtype =  ' 으로 지정해주기

    array1 = ['-1']
    print(np.array(array1, dtype = np.int32).dtype)
    
    # (array1의 데이터타입을 int32로 바꾼 것)의 데이터타입을 print 해봐라. 
    # int32

     

     data type 변환 _  'astype() ' 으로 변경하기

    array2_float = array2.astype(np.float64)     
    array2_float.dtype
    
    # dtype('float64')

     


    5. 난수 생성하기

     

       1. 넘파이의 random 이라는 서브 모듈로 다양한 종류의 확률 분포를 기반으로 하는 표준값을 생성하는 함수
       2. 파이썬에서도 비슷한 기능의 내장 모듈인 random이 있지만 한 번에 하나의 값만 생성할 수 있음
       3. rand() : 0부터 1 사이의 균일분포에서 난수 matrix array 생성
           randn() : 가우시안 표준 정규분포에서 난수 matrix array 생성
           randint() :균일 분포의 정수 난수 1개 생성

     

    ▶ 난수 생성 전 시드값 설정해놓기

    np.random.seed(1000)   # 1000이라는 숫자 안에서 난수 추출

     

    ▶ rand() : [0-1 균등분포]

    np.random.rand(10)

     

    ▶ randn() : [표준정규분포]

    np.random.randn(10)

    np.random.randn(5, 3)

     

    ▶randint() : [정수]

    np.random.randint(5, 25, size=(3, 8) 
    
    # 5 ~ 25까지의 숫자 중 난수 생성, 3차원 배열, 원소 8개씩

     

    ▶ .normal : [정규분포]

    np.random.normal(size=(5, 3))

     

    ▶ .shuffle( )

    : 배열 안의 숫자 순서 섞어서 출력하기

    np.random.shuffle(data)
    data

     

    ▶ .choice([리스트])

    : 리스트 안의 원소를 랜덤하게 출력

    np.random.choice(['apple','banana','orange'], 8)
    
    # apple, banana, orange를 8번 랜덤하게 선택해서 출력해줌

     

    ▶ replace = True / False

    * True : 배열 안의 숫자 중복 출력 허용O

    * False : 배열 안의 숫자 중복 출력 허용X

     

    np.random.choice(10, 5, replace = True)
    
    np.random.choice(10, 5, replace = False)

     


    6. Numpy 주요 함수

     

    * len(array) : 길이 

    * np.mean(array) 또는 array.mean() : 평균값 

    * np.median(array) : 중앙값

    * np.sdt(array) : 표준편차, 표본분산

    * np.var(array) : 분산

    * np.min(array) : 최솟값

    * np.max(array) : 최댓값

    * np.sum(array) : 합계

    * np.cumsum(array) : 누적 합계

    * np.cumprod(array) : 누적 곱

    * np.percentile(array, 0) : 사분위값 (0 대신 25, 50, 75, 100 각각 적어주면 각 분위값 출력)

     


    7. 집합 관련 함수

     

    ▶ np.unique( ) : 유일값

     

    ▶ np.intersect1d(   ,  ) :  공통적으로 존재하는 값을 배열로 반환

     

    728x90

    댓글