ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 라이브러리와 Numpy2
    ML&DL&AI/Python 2023. 6. 15. 18:01
    728x90

    1. Boolean 색인(인덱싱)

    • 필터링의 기능을 담당
    • 조건에 해당하는(True) 값만 출력 할 때 사용
    • 조건에 해당하는 값이 존재하는지 모를 때 사용

     

     

    1.1 예시

    • 배열 안에서 조건을 충족하는 True인 값들만 추출해주는 인덱싱 방법
    # 1부터 10까지 증가하는 1차원 넘파이 배열
    arr1d = np.arange(1,11)
    print(arr1d)
    print(arr1d > 5)
    [ 1  2  3  4  5  6  7  8  9 10]
    [False False False False False  True  True  True  True  True]

     

     

    • 5보다 큰 값만 출력을 원하는 경우
    print(arr1d[arr1d > 5])
    [ 6  7  8  9 10]

     

     

    • 다른 배열에서 조회하면 위치 정보로 해당 위치의 값이 출력

     

    # 점수로 알아보기
    score = np.array([80,75,55,96,30])
    print(score)
    
    # 80점 이상인 경우
    print(score >= 80)
    [80 75 55 96 30]
    [ True False False  True False]
    name = np.array(['A','B','C','D',"F"])
    score[name == 'A']
    array([80])

     

     

     

    2. numpy 범용함수

    • 범용함수란? 널리퍼져있는 수학함수
    • sum(), mean(), max(), min()

     

    2.1 예시

    #arr라는 변수 랜덤수(1~10)들어 있는 크기가 2행 5열인 배열 생성
    arr = np.random.randint(1,10,size=(2,5))
    
    print(np.sum(arr))
    print(np.mean(arr))
    print(np.max(arr))
    print(np.min(arr))
    52
    5.2
    9
    2

     

     

     

    3. Numpy 실습

    • 영화 리뷰 평점 데이터 분석

    ratings.zip
    5.63MB

     

     

    3.1 데이터 확인

    • np.loadtxt으로 오류 발생시 np.getfromtxt으로 교체
    import numpy as np
    movie = np.genfromtxt("ratings.txt", delimiter = '::',dtype = 'int')
    print(movie)
    [[        1      1193         5 978300760]
     [        1       661         3 978302109]
     [        1       914         3 978301968]
     ...
     [     6040       562         5 956704746]
     [     6040      1096         4 956715648]
     [     6040      1097         4 956715569]]

     

     

     

    1.2 데이터 속성 확인

    • 배열의 크기, 개수, 타입, 차원
    print("배열의 차원 :",movie.ndim)
    print("배열의 크기 :",movie.shape)
    print("배열의 전체 요소 개수 :",movie.size)
    print("배열의 타입 :",movie.dtype)
    배열의 차원 : 2
    배열의 크기 : (1000209, 4)
    배열의 전체 요소 개수 : 4000836
    배열의 타입 : int32

     

     

     

    1.3 전체 영화의 평점 평균구하기

    • 전체 데이터에서 평점의 위치 찾기!
    • 평균 구하기!
    # 전체 데이터엥서 평점만 가져오기
    # score_mean 변수에 담아주기
    score_mean = movie[:,2]
    print(score_mean)
    
    
    # 평점의 평균을 구해보자
    print(np.mean(score_mean))
    [5 3 3 ... 5 4 4]
    3.581564453029317

     

     

     

    1.4 1번 사용자가 매긴 평점의 평균 구해보기

    • 전체데이터에서 사용자의 위치
    • 1번 사용자만 보고 싶다면?(boolean 인덱싱)
    • 전체데이터에서 1번 사용자만 존재하는 데이터 확인
    • 1번 사용자가 매긴 평점의 평균 구하기
    # 전체 데이터에서 사용자의 위치
    user_id = movie[:,0]
    print(user_id)
    
    #사용자 아이디 중에서 1번 사용자 아이디만 가져오기
    # 논리 연산만 진행
    print(user_id == 1)
    
    # 전체데이터에서 1번 사용자만 존재하는 데이터
    user_id_1 = movie[user_id == 1]
    
    # 1번 사용자가 매긴 평점의 평균 구하기
    user_id_1_mean = user_id_1[ : , 2]
    print(np.mean(user_id_1_mean))
    [   1    1    1 ... 6040 6040 6040]
    [ True  True  True ... False False False]
    4.188679245283019

     

     

     

    1.5 총 몇명의 사용자가 평점을 매겼는지 알아보자

    • 사용자의 아이디의 유일한 값 구하기(중복제거)
    • unique() : 유일한 값을 구해주는 함수
    user_id_unique = np.unique(user_id)
    print(user_id_unique)
    print(user_id_unique.size)
    [   1    2    3 ... 6038 6039 6040]
    6040

     

     

     

     

    1.6 각 사용자가 매긴 평점의 평균을 구해보자

     

    user_mean_list = []
    for i in user_id_unique : 
        user_mean = movie[user_id == i, 2].mean()
        user_mean_list.append([i, user_mean])
    user_mean_list
    [[1, 4.188679245283019],
     [2, 3.7131782945736433],
     [3, 3.9019607843137254],
     [4, 4.190476190476191],
     [5, 3.1464646464646466],
     ...]

     

     

     

    1.7 각 사용자들의 평점 평균 중에서 4점 이상의 평점만 구하기

    # 배열의 요소간 연산이 가능하도록 리스트를 array로 변환
    user_mean_arr = np.array(user_mean_list,dtype='int')
    
    # 4점이 넘는 사람의 아이디에 접근
    # 그 사람들의 인원수를 계산
    user_mean_arr[user_mean_arr[:,1]>=4].size
    3088

     

    728x90

    'ML&DL&AI > Python' 카테고리의 다른 글

    Python 라이브러리와 Numpy  (0) 2023.06.14
    python 함수  (0) 2023.06.13
    Python 딕셔너리(dictionary)  (0) 2023.06.13
    python 반복문  (0) 2023.06.12
    python 리스트와 튜플  (0) 2023.06.08
Designed by Tistory.