[python] 정규표현식, 단위변환, 범주설정

박경국·2021년 12월 13일
0

python

목록 보기
6/8
post-thumbnail

1. 정규표현식

df['JP_Sales'] = df['JP_Sales'].str.replace(pat=r'[M]', repl=r'', regex=True)
  • JP_Sales column의 str 형식의 'M'을 삭제(엄밀히 말하면''으로 대체)
  • []는 문자 클래스를 의미함
  • 문자 클래스 안에는 어떤 문자도 들어갈 수 있음
  • 즉, 정규표현식이 [abc]라면 이 표현식의 의미는 "a,b,c" 중 한 개의 문자와 매치를 뜻함
  • 반면, 문자 클래스 안에 ^를 사용할 경우 반대(not)를 의미함. [^0-9]라는 정규 표현식은 숫자가 아닌 문자에 매치됨

2. columns 내에 일부 데이터만 단위가 다를 경우 단위변환 과정

#단위 제거 함수 선언
def fix_columns(col):
    temp_list = []

    for i in col:
        temp = float(i.replace("K",""))
        temp_list.append(temp)

    return temp_list
    
 #X column에서 단위(K)가 붙어있는 데이터만 호출하여 데이터프레임을 구성하고 les 변수에 저장  
 les = df.loc[df.X.str.contains('K')]
 
 #les 변수에서 단위를 지워줄 X columns을 단위 제거 함수에 적용
 les['X'] = fix_columns(les_NA['A'])
 
 #단위를 제거한 column에 단위변환가중치를 곱함
 les['X'] = les_NA['X']*0.001
 
 #원본 데이터프레임에서 단위가 붙어있는 column의 데이터값을 부른 후, 가중치를 곱했던 les 값으로 대체
 df['X'].loc[df.X.str.contains('K')] = les['X']

3. 범주 설정

df['Gene']  = df.Year.map(lambda x: x//10 *10)
df['Gene'].unique()
  • Year column의 데이터를 하나씩 lambda 함수에 적용
  • lambda 함수는 map 함수에게 넘겨받은 데이터를 x에 적용
  • 연도를 10으로 나누고 그 몫만 남긴 뒤 10을 곱함(ex. 1981 -> 198 -> 198*10 -> 1980)

0개의 댓글