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
반응형
'Data Science > Pandas' 카테고리의 다른 글
[elice pandas] 데이터 정제, 데이터 병합 (0) | 2025.05.12 |
---|---|
[elice pandas] 데이터 변환 (map(), apply(), lambda 함수) , 데이터 요약/추출 (0) | 2025.05.12 |
[elice 머신러닝] dataframe 문제.. (0) | 2025.05.06 |
[pandas] RFM분석 (2) | 2024.07.14 |
[pandas] 데이터 전처리 및 분석 연습2 (0) | 2024.07.08 |