0. 배열 메서드
1-1. len(list) : 리스트의 전체 길이
1-2. max(list) : 리스트 안에 있는 요소 중에서 최대값 반환 (문자인 경우 알파벳 순서 기준)
1-3. min(list) : 리스트 안에 있는 요소 중에서 최소값 반환 (문자인 경우 알파벳 순서 기준)
1-4. list(seq) : 튜플 > 리스트 자료형으로 변환
2-1. list.append(obj) : 기존 리스트에 1개의 요소를 이어 붙이기
2-2. list.extend(seq) : 기존 리스트에 다른 리스트를 이어 붙이기
2-3. list.count(obj) : 리스트 안에 obj 가 몇 개 들어있는지 세어서 개수를 반환
2-4. list.index(obj) : 리스트에서 obj 요소 값이 있는 가장 작은 index 값 반환
2-5. list.insert(index, obj) : 기존 리스트의 index 위치에 obj 값을 삽입
2-6. list.pop(obj=list[-1]) : 기존 리스트에서 마지막 요소를 제거하고, 제거된 마지막 요소를 반환
2-7. list.remove(obj) : 기존 리스트에서 remove(obj) 메소드 안의 obj 객체를 제거
2-8. list.reverse() : 리스트의 객체를 리스트 안에서 순서를 반대로 뒤집기
2-9. list.sort() : 리스트의 객체를 리스트 안에서 순서대로 정렬하기 (디폴트 오름차순)
list.sort(reverse=True)
1. #1) 넘파이(Numpy)
#python 데이터 분석의 기본적인 기능들을 제공
#특히 백터 및 행렬 연산과 관련된 편리한 기능들을 제공
# 1) 백터 및 행렬 연산에 특화된 라이브러리
# 2) array 단위로 데이터를 관리함. 행렬(matrix)과 비슷함
# 3) pandas와 함께 데이터 분석에 많이 사용됨
2. 난수로 배열 생성하기
import numpy as np
data = np.random.rand(50) #50개의 1차원 배열 생성
print(data)
#넘파이로 랜던값 생성 (2차원 배열 -10행(줄) 3열(칸))
data2 =np.random.rand(10,3)
print(data2)
# rand() : 0.0~ 1.0 #0 ~ 1의 균일분포 표준정규분포 난수를 matrix array(m,n) 생성
# randn() : 랜덤수자를 의미(음수, 양수 전부) #평균0, 표준편차1의 가우시안 표준정규분포 난수를 matrix array(m,n) 생성
3. 넘파이 메서드 정리
np.array()
입력받은 파이썬 리스트를 ndarray 형태로 바꿔줍니다
> li = [1,2,3,4,5,6]
> arr = np.array(li) # ndarray로 변환
> display(arr)
array([1, 2, 3, 4, 5, 6])
np.arange()
파이썬 range 함수와 같지만 ndarray 객체를 생성하죠
> np.arange(1,7)
array([1, 2, 3, 4, 5, 6])
np.zeros((행크기, 열크기)), np.full((행크기, 열크기), 초기값), np.eye((행크기, 열크기))
기본 행렬 생성 함수들
np.add(), np.substract(), np.mulyiply(), np.divide()
사칙연산입니다. 각 해당하는 위치의 원소끼리 연산하죠.
np.dot() 행렬곱
np.sum(), np.prod()
원소의 합, 혹은 곱을 반환
np.max(), np.min()
최대와 최소값 반환하는 함수
np.argmax(), np.argmin()
최대와 최소값을 가진 위치를 반환하는 함수
ndarray.shape
ndarray의 차원을 반환
****난수 발생 함수들
np.random.seed()
기본 시드지정함수로 랜덤이 들어간 함수에서 항상 같은 결과를 표출하기 위해 사용한다
모델끼리의 성능비교같은 것을 할때는 고정하는것이 유리 숫자는 아무거나 넣어도 되지만
항상같은것을 넣도록 하는게 좋음
np.random.randn()
표준 정규분포에 따른 n 개의 무작위 숫자 생성
np.random.randint(이상, 미만, 몇개)
랜덤한 정수를 생성해줍니다. min 과 sup 지정도 가능하죠
4-1 . 파일 읽어와서 다루기
1::1193::5::978300760
1::661::3::978302109 <<이런형태
data =np.loadtxt("D:/Dev65/python_workspace2/data/movielens/ratings.dat", \
delimiter="::", dtype=np.int64)
# ::을 구분으로 열구분 / 줄바꿈은 행 / 배열 생성(넘파이 이용)
4-2.
#전체 평균 평점 계산
#모든 행의 평점 (=3열) 평균
mean_rating = data[:, 2].mean()
print(mean_rating)
print()
#사용자 아이디 수집
#중복값 제거
user_ids = np.unique(data[:,0])
print(user_ids)
# 사용자별 평점 평균 집계
# 사용자별 평점평균값을 저장할 배열
data =np.loadtxt("D:/Dev65/python_workspace2/data/movielens/ratings.dat", \
delimiter="::", dtype=np.int64)
user_ids = np.unique(data[:,0])
mean_values= []
for user_id in user_ids :
#movie_data 중에서 모든 행, 0번 필드가 user_id인 행의 모든 컬럼을 data_for_user에 저장
#해당 사용자의 id의 모든 정보
data_for_user = data[data[:,0]==user_id, :]
#print(data_for_user)
#2번째 인덱스(평점)에 해당하는 값의 평균값
mean_value = data_for_user[:,2].mean()
#print(mean_value)
#사용자 아이디와 평점평균값을 배열에 추가
mean_values.append([user_id, mean_value])
print(mean_values[:5])
print(type(mean_values))
#리스트를 넘파이 배열로 변환
mean_array = np.array(mean_values, dtype=np.float32)
mean_array[:5]
#넘파이 배열 csv 파일로 저장
# np.savetxt(경로포함 csv 파일명, 계산결과, format, 구분자)
# csv 파일
np.savetxt('D:/Dev65/python_workspace2/data/movielens/test.csv', \
mean_array, fmt="%.1f", delimiter=",")