DS가 되기 위한 여정 👩‍💻

Data Science/Pandas

[elice pandas] ',' , '-' replace 간단하게 하기, 형변환

Tashapark 2025. 5. 12. 00:22
728x90

*elice 강의안

 

- object type을 int로 바꾸기 위한 강의 내용 중에서 코드가 진짜 간단해서 적어둠. 

- 매번 할 때마다 헷갈리는 건데 아래처럼 하면 될 듯. 

 

`info()`를 사용해 데이터의 타입을 확인해보면 모든 데이터가 수가 아닌 텍스트(Object) 타입으로 저장되어 있습니다. 이는 즉 데이터에 있는 3,359는 숫자 3359가 아닌 텍스트 "3,359"가 저장되어있는 상태입니다. 이 상태로는 숫자의 연산, 나아가 평균값과 같은 통계량을 측정할 수 없습니다. 따라서 우리는 이 텍스트(Object)들을 모두 **정수형(int)** 으로 바꾸어야 합니다. 정수형으로 바꾸기 위해선 텍스트에서 숫자만을 남기고 모두 제거해야 합니다. 이를 위해 숫자로 바꾸어야 하는 컬럼들에서 `str.replace()`를 활용하여 -를 0으로 바꾸고 콤마를 제거합니다.

 

# 쉽게 데이터 바꾸기
columns=['유료합계', '어른', '청소년', '어린이', '외국인', '단체', '무료합계', '총계']
for i in columns:
    df[i]=df[i].str.replace('-','0')
    df[i]=df[i].str.replace(',','')

 

- df[i]로 주고... 전부 바꾸는 것은 처음 해봐서 신기하다. 

 

- 판다스는 바꿀 때 원본 값이 바뀌지 않는 것을 유념할 것. 

- 아래처럼 다시 원본에 넣어 주고나  inplace = True를 하거나 할 것. 

df["어른"]=df["어른"].astype(int)

df.info()

 

- 형변환을 한 번에 할 때는 아래처럼,

- 숫자는 astype(int) to_numeric()

for문을 쓸 것

columns=["유료합계", "어른", "청소년", "어린이", "단체", "무료합계", "총계"]
for i in columns:
    df[i]=pd.to_numeric(df[i])
    
df.info()

 

- 날짜는 to_datetime()로 변환하면

- 예, '2025-05-12' : str 에서 -> datetime으로 

df["날짜"]= pd.to_datetime(df["날짜"])
df.info()

 

- dt 속성을 활용해서 간단하게 각 연도, 월, 일 등 추출 가능합니다!

df['연']=df['날짜'].dt.year
df['월']=df['날짜'].dt.month
df['일']=df['날짜'].dt.day
df['요일']=df['날짜'].dt.dayofweek

 

728x90
반응형