magicode
article thumbnail

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']

 

profile

magicode

@AI magic

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!