본문 바로가기
IT 자격증/AICE Associate

AICE Associate - 데이터 전처리2 (기타 등등)

by ootd_info 2024. 6. 19.
반응형

1. Merge 데이터 합치기

# pd.merge(df_left, df_righr, on=key값):
# how: 병합시 기준이 될 인덱스 ( left: 기존 데이터, right: 병합할 데이터, inner: 교집합, outer: 합집합 )
# on: 열 기준 병합시 기준으로할 열, key 값

df_merge = pd.merge(df_a, df_b)  #간단버젼

df_merge = pd.merge(df_a, df_b, how='left', on='movieId')   #옵션버젼

 

2. Concat 기준열 없이 데이터 합치기

# 아래로 합치기
df_concat = pd.concat([df_a, df_b])

# 옆으로 합치기
pd.concat([df_a, df_b], axis=1)

# 'inner join'을 활용하여 두 데이터 프레임에서 모두 존재하는 행 인덱스만 가져오기
pd.concat([df_a, df_b], join='inner')

 

3. 불필요 칼럼 삭제하기

#pandas의 drop() 함수를 사용하고 columns 옵션을 활용합니다.
# df.drop(columns=['컬럼명1', '컬럼명2])
#데이터프레임 df에서 'new' 컬럼을 삭제

df = df.drop(columns=['new'])

 

4. 데이터 정렬하기

df.sort_values(by='movieId')

df.sort_values(by='movieId', ascending=False) #내림차순

df.sort_values(by='movieId', inplace=True) #정렬 완료 후 df에 재저장

 

5. 인덱스 재정렬

df.reset_index()

# drop 옵션을 True로 하여 기존의 인덱스는 삭제하고 리셋완료(새인덱스) 상태로 저장
df.reset_index(drop=True, inplace=True)

 

6. 조건에 맞춰 필터링하기

# 성별 컬럼의 구성을 확인합니다.
df['gender'].value_counts()

 

7. 전체 데이터프레임에서 특정컬럼 값을 필터링(조건적용)한 정보를 가져옴

# 전체 데이터프레임에서 성별이 남자인 사람으로 필터링한 정보를 가져옵니다.

new_df = df[df['gender']=='M']                # 'gender'컬럼이 M인 row만 저장
new_df = df[ df[‘Speed_Per_Hour’] < 300 ]	#'Speed_Per_Hour'가 300미만인 row만 저장

new_df = df[ df[‘adress’] != ‘-‘ ]          # 'address'가 '-'가 아닌 row만 저장

 

8. 복합조건 필터링

#데이터프레임에서 'userId'가 5번인 고객이 2점 이하의 평점을 내린 목록들을 출력
df[(df['userId']==5) & (df['rating']<=2) ]
 

#데이터프레임에서 'userId'가 5번인 고객이 2점 이하의 평점을 내린 row의 title 가져옴
df[(df['userId']==5) & (df['rating']<=2)]['title']

 

9. 칼럼명 변경

# 기존 컬럼명 확인하기
df.columns

# 새로운 컬럼명 List를 작성하여 대체하기
df.columns = ['movieId', 'imdbId', 'tmdbId', '영화제목', 'genres', 'userId', 'rating',
       'timestamp', 'gender', 'age', 'occupation', 'zipcode']


#선택하여 컬럼명 변경
df = df.rename(columns={'zipcode':'우편번호'})
 

#새로운 칼럼을 추가하고 기본값 세팅하기 (df에 'New'컬럼 만들고 기본값으로 0 세팅)
df['new'] = 0

 

10. 기존 컬럼의 데이터를 분리하여 새 칼럼에 넣기

# df['영화제목']의 정보를 문자열 처리한 후 괄호'(',')'를 제외한 4자리의 숫자만 가져옵니다.
# 영화제목에 있는 값 예시 : Toy Story (1995)
 

# 가져온 데이터를 'year' 이라는 새로운 컬럼을 만들고 저장합니다.
df['year'] = df['영화제목'].str[-5:-1]

# split() 함수를 사용하면 구분자를 기준으로 데이터를 분리
# 명령어 앞에 str을 붙이고 split() 함수를 사용합니다.
# genres에 있는 값 예시: Adventure|Animation|Children|Comedy|Fantasy

 df['genres'].str.split('|')

 

11. 필요한 컬럼만 원하는 순서대로 저장하기

#칼럼명 확인하기
df.columns

 # 칼럼명이 'movieId', 'imdbId', 'tmdbId', '영화제목', 'genres', 'userId', 'rating',
#           'timestamp', 'gender', 'age', 'occupation', '우편번호', 'year'
 

# df의 컬럼명을 필요한 컬럼과 원하는 순서로 리스트화
new_columns = ['movieId', 'imdbId', 'tmdbId', '영화제목', 'year', 'genres', 'userId', 'rating', 'timestamp', 'gender', 'age', 'occupation', '우편번호']
 
# df에서 new_coluns 리스트의 컬럼들만 뽑아서 다시 저장해 줍니다.
df = df[new_columns]

 

12. 데이터 타입 변경하기

df = df.astype('object') 

#Year 컬럼만 데이터 타입을 int로 변경하기
df = df.astype({'Year':'int'})

 

13. 특정 데이터 타입의 컬럼명만 가져오기

#데이터 타입이 str인 칼럼의 칼럼명 저장하기
cl = df.select_dtypes(str).columns

 

14. 중복데이터 처리하기

#중복데이터 확인
df.duplicated()

# 데이터프레임 df의 'Title'과 'UserId' 컬럼이 중복이 되는 데이터를 확인
df.duplicated(subset=['Title','UserId']).sum()

#영화 제목이 같은 영화를 두번 본 고객이 존재 -> 필터링
df[(df['Title']=='Iron Man') & (df['UserId']==550)]

#’Title'과 'UserId' 가 같고 거기다가 'Year' 제작년도까지 같은 데이터를 확인
df.duplicated(['Title','UserId', 'Year']).sum()

# ‘Title'과 'UserId' 가 같고 거기다가 'Year' 제작년도까지 같은 데이터 중복제거
# ignore_index: 기존인덱스 무시하고 새로 인덱스 부여

df.drop_duplicates(['Title','UserId', 'Year'], ignore_index=True)

 

15.데이터 엑셀로 저장하기

# 판다스 to_csv 함수 이용해서 'data_save.csv' 파일로 저장하기
# index=False 주어야 기존 인덱스 값이 저장되지 않음

df.to_csv('data_save.csv', index=False)

 

16. 데이터 값 변경하기

#칼럼명1의 값 ' '을 '0'으로 변경(대체)하기, inplace는 df에 결과 저장
df['칼럼명1'].replace(' ', '0', inplace=True)


# 'result' 컬럼의 ['Yes', 'No'] --> [1, 0] 변경하기.
df['result'].replace(['Yes', 'No'], [1, 0], inplace=True)

 

17. 두가지 이상의 데이터 조건 검색하기

# '성별'이 M 이면서 '나이'가 30대 이상 -AND조건
df[ (df['성별'] =='M') & (df['나이'] >= 30)]

# '성별'이 M 이거나 '나이'가 30대 이상인 사람 -OR조건
df[ (df['성별'] =='M') | (df['나이'] >= 30)]
728x90

'IT 자격증 > AICE Associate' 카테고리의 다른 글

AICE Associate 후기 (가져옴)  (0) 2024.06.25
AICE Associate - 샘플문제 풀이  (0) 2024.06.24
AICE Associate - 딥러닝  (0) 2024.06.19
AICE Associate - 머신러닝  (0) 2024.06.19
AICE Associate - 데이터 전처리  (0) 2024.06.19

댓글