numpy
선형대수 기반, 다차원 배열 가능
ndarray생성
- np.arange(start, stop, step)
변수1 = np.array([3, 2, 5, 1, 4])
> sort()
np.sort(변수) -> 원본 행렬 변경하지 않음
변수.sort() -> 원본 행렬 변경함
> argsort()
데이터를 오름차순으로 정렬한 이후 인덱스 값을 반환
내림차순을 원하는 경우 [::-1] 작성
변수2 = np.argsort(변수1)[::-1]
> reshape()
ndarray를 특정 차원 및 크기로 변환해주는 함수
변수1 = np.array(10)
>> [0 1 2 3 4 5 6 7 8 9]
변수2 = 변수1.reshape(2,5)
>> [[0 1 2 3 4]
[5 6 7 8 9]]
변수3 = 변수1.reshape(2,-1)
>> [[0 1 2 3 4]
[5 6 7 8 9]]
reshape에 -1를 넣으면 auto와 비슷한 개념으로 다른 숫자에 맞춰 알아서 인자가 정해지게 함
pandas
> DataFrame
판다스의 핵심 객체로 대부분의 판다스 함수는 DataFrame과 연관있음
행과 열로 이루어진 2차원 데이터를 담는 데이터 구조체
DataFrame의 형태와 상관없이 고유번호인 index가 있음
DataFrame는 여러개의 칼럼은 가지고 있고, 단 하나의 칼럼만 가지고 있는 경우에는 Series라고 함
> ndarray, list, dictionary를 DataFrame으로 변환
원래 1차원이던 것들을 2차원인 데이터프레임으로 변환하는 것이기 때문에 새롭게 만들어지는 컬럼명이 반드시 필요
col1 = ['col1']
list1 = [1, 2, 3]
ndarray1 = np.array(list1)
# 리스트를 이용한 데이터프레임 생성
df1 = pd.DataFrame(list1, columns = col1)
# ndarray를 이용한 데이터프레임 생성
df2 = pd.DataFrame(ndarray1, columns = col1)
> DataFrame을 ndarray, list, dictionary를 DataFrame로 변환
# ndarray로 변환
nd = df1.values
# list로 변환
list2 = df1.values.tolist()
# dictionary로 변환
dic = df1.to_dict('list')
딕셔너리로 변환할 때의 차이점은 ()안에 반환결과의 타입을 작성
위에서는 to_dict('list')로 작성했기 때문에 딕서너리 값이 리스트형으로 반환
> drop()
drop()안에는 다양한 인자를 설정할 수 있음
axis : 행을 선택하고 싶으면 0, 열을 선택하고 싶으면 1 작성
labels : axis에서 행을 선택했으면 해당하는 인덱스값, axis에서 열을 선택했으면 컬럼명 작성
inplace : 원본데이터에서 바로 삭제할지, 원본데이터는 변환하지 않고 결과값에서만 삭제해 미리보기할지 결정
원본데이터 바로 변환을 원한다면 True, 미리보기만 한다면 False(기본값)
주의 : inplace=true일때 본인에게 재할당 하면 데이터값이 none으로 입력됨
변수1 = dataframe
변수1 = 변수1.drop('컬럼명', axis = 1, inplace=True)
>> 컬럼명에 해당되는 데이터가 삭제되는 것이 아니라 데이터값이 none으로 저장됨
이런경우에는 새로운 변수에 담아야 컬럼이 정상적으로 삭제됨
> 판다스의 인덱스, reset_index()
데이터에 대한 고유번호로 인데스변경, 연산 등은 할 수 없음
데이터 정리를 위해 drop등으로 인해 행이 사라져 인덱스값이 뒤죽박죽 되었다면 reset_index()를 통해 인덱스 재할당 가능
이경우, 기존의 인덱스값은 index라는 컬럼명으로 새로 추가됨
> 판다스의 []는 넘파이의 []와 다름
넘파이에서는 []안에 거의 인덱스값, 위치값만 작성
판다스의 []안에는 컬럼명을 주로 넣고 때에따라 불린 인덱싱도 사용
판다스의 []안에는 범위형 인덱스값[0:2]을 넣을 수 있지만 거의 사용하지 않음
> ix[] : 현재는 사라짐
넘파이의 []와 비슷한 역할을 하는 연산자
데이터프레임.ix[인덱스값, 컬럼위치값]
데이터프레임.ix[0,2] >> 0번째 행, 3번째 컬럼
데이터프레임.ix[인덱스값, 컬럼명]
데이터프레임.ix[0, 'name'] >> 0번째 행, 'name'컬럼
> 사라진 ix[]대신 위치기반의 iloc[], 명칭기반의 loc[]
iloc[] 은 위치값만 넣어줘야하기 때문에 정수형으로 작성
데이터프레임.iloc[위치값1, 위치값2]
데이터프레임.iloc[1,2] >> 1행, 3열
loc[] 은 인덱스값과 칼럼의 명칭으로만 작성
데이터프레임.loc['인덱스값', '칼럼명']
# 인덱스값이 1인 경우
데이터프레임.loc[1, 'name']
# 인덱스값이 'one'인 경우
데이터프레임.loc['one', 'name']
'ML&DL > study' 카테고리의 다른 글
파이썬 머신러닝 03. 평가 (0) | 2021.07.19 |
---|---|
파이썬 머신러닝 02. 사이킷런 (1) | 2021.07.16 |
머신러닝 알고리즘 8. 순환신경망 (RNN) (0) | 2021.06.18 |
머신러닝 알고리즘 8. 합성곱 신경망 (CNN) (0) | 2021.06.18 |
머신러닝 알고리즘 7-2. 신경망(딥러닝) 학습 (0) | 2021.06.18 |