반응형
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 |
댓글