본문 바로가기
Challange

패스트캠퍼스 환급챌린지 32일차 미션 (3월 3일) : 데이터 분석 Master Class 강의 후기

by @0-0 2024. 3. 3.
반응형

 

32일차!

지난 강의에 이어 오늘도 데이터 전처리 강의를 수강하였다!

데이터프레임을 다루기 때문에 어제 배웠던 Pandas 라이브러리를 이용하였다.

조건에 맞는 데이터를 추출하고 기본적인 데이터를 가공하기 위해

인덱스, 행, 열을 다루는 법을 배웠다.

SQL의 내용과 거의 비슷했지만 함수에 따라

시리즈로 출력되거나 데이터프레임으로 출력되는 것이 다르다는 것을 알아두고

원하는 대로 가공할 수 있어야할 것 같다.

특히 같은 함수에서 행이냐 열이냐에 따라 axis 조건을 지정해야 하는 경우가 있는데

열일 경우에 axis 조건을 제대로 지정하지 않으면 행이 삭제되어 버리니

이를 주의해야할 것 같다!

 

결측값을 대치하는 내용은 처음 배운 내용이라 신기했다.

항상 특정값으로 변경하는 .fillna()만 사용을 했는데

바로 위의 값이나 바로 아래의 값으로 대치할 수 있는 함수를 배워갈 수 있었다.

 

또한 특정 타입인 행을 추출하는 함수도 배워갈 수 있었다.

처음에 데이터를 파악할 때 info를 통해서도 확인할 수 있지만

select_dtypes()를 사용하여 특정 타입인 컬럼을 확인한 후

바꾸어야 하는 타입을 확인할 때 유용하게 사용할 수 있을 것 같다!🤗

 

 

 

 

 


 

Part 3. PYTHON _ 데이터 전처리

 

 

 

 

 

 

03. 파이썬을 이용한 데이터 분석 - 데이터 전처리

 

3. 데이터 추출

 

1) 행, 열 조회

 

(1) 인덱싱

 

- 행

# 한 개의 행
데이터프레임명[인덱스:인덱스+1]

# 여러 개의 행
데이터프레임명[시작인덱스:끝인덱스+1]

 

- 열

# 한 개의 열
데이터프레임[컬럼명]
데이터프레임.컬럼명

# 여러 개의 열
데이터프레임[컬럼명1, 컬럼명2, ...]

 

* 한 개의 열만 조회할 때 시리즈의 형태로 출력됨 → 데이터프레임으로 변환

   - .to_frame()

   - df[[컬럼명]]

 

 

(2) loc, iloc

 

① loc : 레이블 값을 사용하여 조회  →  조회하고 싶은 행/열의 인덱스 이름으로 조회

데이터프레임명.loc[행조건,열조건]

   - 행 / 열 중 하나만 조회할 때는 열 / 행 조건에 : 를 입력

 

② iloc : 위치 인덱스를 사용하여 조회  →  조회하고 싶은 행/열의 위치 기준으로 조회

데이터프레임명.iloc[행인덱스조건,열인덱스조건]

 

 

2) 원하는 조건으로 데이터 추출

 

(1) 데이터 정렬

데이터프레임명.sort_values(정렬기준컬럼)

- ascending = False 조건 : 내림차순 정렬

 

- 여러 개의 열에 오름차순, 내림차순을 따로 정하여 정렬할 수 있음

 

 

(2) 특정 조건을 충족하는 데이터 추출

데이터프레임명[조건식]
데이터프레임명.query('조건식')

- query를 사용할 때 조건식은 무조건 문자열로!

 

 

 

4.  데이터 가공

 

1) 인덱스, 행, 열

 

(1) 인덱스: 데이터프레임 행들의 이름

 

① 인덱스 변경

# 일부 인덱스 변경
데이터명.rename({인덱스:바꿀 인덱스, 인덱스:바꿀 인덱스, ...})

# 전체 인덱스 변경
데이터명.index = 바꿀 인덱스 리스트

   - .rename() 을 사용 후 데이터에 덧씌워주어야 함!

 

② 열을 인덱스로 설정

데이터명.set_index(컬럼명)

 

③ 인덱스를 열로 변환

데이터명.reset_index()

    - reset_index()의 디폴트 설정은변환한 열을 남김, 이때 해당 열을 삭제하고 싶으면 drop=True 조건을 부여

 

 

(2) 행

# 행 추가
pd.concat([기존 데이터명, 붙일 데이터명])

# 행 제거
데이터명.drop(인덱스명, axis=0)

# 행 중복 제거
데이터명.drop_duplicates()

- .drop()의 디폴트는 axis=0으로 아무것도 적지 않아도 행 제거

 

(3) 열

# 열 추가
데이터명[추가할 컬럼명] = 추가할 값

# 열 제거
데이터명.drop(컬럼명, axis=1)

- 식을 작성하여 기존의 값을 계산하여 추가할 수도 있음

- list comprehensionsplit()을 이용하여 원래 컬럼을 잘라 새로운 컬럼 생성 가능

# 하나의 열 변경
데이터명.rename({열이름:바꿀이름, 열이름:바꿀이름, ...}, axis=1)

# 전체 열 변경
데이터명.columns = 열 이름 리스트

 

 

 

2) 결측값

 

(1) 결측값 확인

- 데이터프레임명.info()를 사용하여 전체 데이터프레임의 결측값에 대한 정보 파악 가능

- isna() : 결측값을 True로 반환

- notna() : 결측값을 False로 반환

 

데이터프레임명[].isna().sum() 으로 각 컬럼별 결측값의 갯수를 알 수 있음

   → 컬럼별 결측값의 비율을 확인 후 결측값의 제거 방법을 정해야 함

 

 

(2) 결측값 제거

데이터명.dropna(axis=0, how='any', subset=None)

   · axis : {0: index / 1: columns}

   · how : {'any': 존재하면 제거 / 'all': 모두 결측치면 제거}

   · subset : 행/열의 이름을 지정

 

 

(3) 결측값 대치

# 데이터 전체의 결측값을 특정 값으로 변경
데이터명.fillna(대치할 값)

# 특정 컬럼의 결측값을 특정값으로 변경
데이터명[컬럼명].fillna(대치할 값)

# 결측값을 바로 위의 값과 동일하게 변경
데이터명.fillna(method='ffill')

# 결측값을 바로 아래의 값과 동일하게 변경
데이터명.fillna(method='bfill')

 

 

 

3) 타입 변환

 

(1) 타입 확인

.dtypes : 열의 타입을 시리즈로 반환

 

+ 특정 타입을 가진 컬럼 추출: 데이터명.select_dtypes(타입)

 

 

(2) 타입 변환

데이터명[컬럼명].astype(타입)

 

 

- 결측치가 존재하면 타입 변환 X

결측치를 다른 값으로 채워준 다음 타입 변환을 수행 후 결측치로 다시 바꿈

 

 

 

 

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

 

 

 

:: https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

반응형