EDA TEST 8

HA_·2024년 4월 11일

1-1.

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 0: invalid start byte
  • 인코딩 과정에서의 에러이므로, pandas.read_csv 함수의 파라미터로 "encoding='cp949'"를 포함시켜준다.
df = pd.read_csv(PATH , encoding='cp949')

출처: https://jonhyuk0922.tistory.com/232


1-2.

중복행 찾기

DataFrame.duplicated(subset=???, keep='???')

출처: https://bramhyun.tistory.com/66 [日日新又日新:티스토리]

중복행 제거

DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)

subset: 중복값을 검사할 열
keep: {first / last} 중복제거를할때 남길 행
ignore_index: 원래 index를 무시할지 여부입니다. True일 경우 0,1,2, ... , n으로 부여됩니다.
출처: https://wikidocs.net/154060


1-3.

조건1: 각 Row(행) 중 ['사용월', '호선명', '지하철역'] 의 내용이 모두 똑같은(중복되는) Row(행)이 있다면 가장 앞의 Row(Index가 가장 낮은 Row(행))에 ['유임승차인원', '무임승차인원', '유임하차인원', '무임하차인원'] 각각 합한 값을 입력하고, 나머지 ['사용월', '호선명', '지하철역'] 의 내용이 중복되는 Row(행)를 삭제하세요.

df_target1_copy[['유임승차인원', '무임승차인원', '유임하차인원', '무임하차인원']] = df_target1_copy.groupby(['사용월', '호선명', '지하철역'])[['유임승차인원', '무임승차인원', '유임하차인원', '무임하차인원']].transform('sum')
# # 중복행 첫 행만 남기고 제거
df_target1_copy.drop_duplicates(subset=['사용월', '호선명', '지하철역'], keep='first', inplace=True)

1-4.

조건1: '호선명' Column(열)의 Data가 '9호선2~3단계' 또는 '9호선2단계'라면 이를 '9호선'으로 변경하세요.

# '호선명' 킬럼 값이 '9호선2단계'인 경우 - 205개
df_target_copy.loc[df_target_copy['호선명'] == '9호선2단계', '호선명'] = '9호선'
# '호선명' 킬럼 값이 '9호선2~3단계'인 경우 - 559개
df_target_copy.loc[df_target_copy['호선명'] == '9호선2~3단계', '호선명'] = '9호선'

조건2: '지하철역' Column(열)의 Data에 괄호('(', ')')가 있다면, 괄호 안의 내용과 괄호 자체를 모두 지워주세요.

예시: '청량리(서울시립대입구)' -> '청량리'

  • 정규표현식 - 메타문자들을 문자열로 쓰고 싶다면 앞에 \를 붙여주면 됨.
str.contains('\(|\)')

r"(.)"
=>
r: Raw string을 나타냅니다. 이것은 백슬래시()를 특별 문자가 아닌 문자로 취급하게 합니다. 파이썬에서 정규 표현식을 사용할 때 주로 쓰입니다.
(.
)
(: 여는 괄호
.*: 어떤 문자나 문자열이든(줄 바꿈 문자를 제외한 모든 것) 0개 이상 반복을 의미
): 닫는 괄호

0개의 댓글