728x90
데이터 전처리 정보, 형태 변경, 변형]
변경 - 데이터 - replace
titanic['Sex'] = titanic['Sex'].replace({'male':1, 'female':0})
변경 - 데이터 - 컬럼 안 데이터 다른 값으로 바꾸기 map
y_train_map = y_train.map({'STANDING':0, 'SITTING':1, 'LAYING':2, 'WALKING':3, 'WALKING_UPSTAIRS':4, 'WALKING_DOWNSTAIRS':5})
y_val_map = y_val.map({'STANDING':0, 'SITTING':1, 'LAYING':2, 'WALKING':3, 'WALKING_UPSTAIRS':4, 'WALKING_DOWNSTAIRS':5})
y_val_map
변경 - 데이터 - 특정 컬럼 안의 데이터 프레임에서 띄어쓰기 기준, 앞 데이터 선택
# 데이터프레임의 특정 컬럼에서 띄어쓰기를 기준으로 앞 부분만 선택하여 기존 데이터 대체
# 예시 데이터프레임 생성
df = pd.DataFrame({
'Menu': [
'스크램블에그',
'고로케',
'카레 고등어구이',
'콩가루 배춧국',
'크림 리조또',
'돼지고기 파인애플볶음밥',
'샤인머스켓',
'고구마 스프',
'돼지고기 깻잎볶음',
'쇠갈비 찜',
'온청포 묵국',
'양배추 샐러드'
]
})
# 띄어쓰기를 기준으로 첫 부분만 선택하여 기존 데이터 대체
df['Menu'] = df['Menu'].apply(lambda x: x.split(' ')[0])
df
변경 - 데이터 - 이름에서 괄호 ( ) 부분을 제거하고 기존 값을 대체
# 괄호가 포함된 새로운 예시 데이터프레임 생성
df_with_parentheses = pd.DataFrame({
'Menu': [
'스크램블에그(달걀)',
'고로케(감자)',
'카레(고등어)',
'콩가루(배춧국)',
'크림(리조또)',
'돼지고기(파인애플볶음밥)',
'샤인머스켓(포도)',
'고구마(스프)',
'돼지고기(깻잎볶음)',
'쇠갈비(찜)',
'온청포(묵국)',
'양배추(샐러드)'
]
})
# 괄호와 괄호 안의 내용을 제거하는 정규 표현식
regex = re.compile(r'\([^)]*\)')
# 메뉴에서 괄호 안의 내용 제거 후 띄어쓰기를 기준으로 첫 부분만 선택
df_with_parentheses['Menu'] = df_with_parentheses['Menu'].apply(lambda x: regex.sub('', x).split(' ')[0])
df_with_parentheses
변경 - 순서 - 컬럼 순서 변경
# 열 순서 변경
pop_test = pop_test[['year', 'household', 'total', 'male', 'female', 'k_total', 'k_male', 'k_female', 'f_total', 'f_male', 'f_female', 'older_65']]
변경 - 컬럼 - 컬럼명을 첫 행의 값으로 변경, 첫 행 삭제
import pandas as pd
# 데이터프레임 예시 생성
data = [["Column1", "Column2", "Column3"], [1, 2, 3], [4, 5, 6]]
df = pd.DataFrame(data)
display(df)
# 첫 번째 행을 컬럼으로 설정
df.columns = df.iloc[0]
display(df)
# 첫 번째 행 삭제
df = df.drop(df.index[0])
display(df)
변경 - 컬럼 - 데이터 프레임 인덱스 지정
df = pd.DataFrame(data, index=['Row1', 'Row2', 'Row3', 'Row4'])
변경 - 데이터 선택 - 특정 데이터를 포함한 행만 남기기 isin()
com_values = ['유동비율', '차입금', '자기자본', '총자산']
filtered_data = data_small[data_small['com'].isin(com_values)]
변경 - 이름 - 이름 변경 rename
# 데이터 읽어오기
path = 'https://raw.githubusercontent.com/Jangrae/csv/master/pop_simple.csv'
pop = pd.read_csv(path)
pop.set_index('year', inplace = True)
pop.index.name = None
pop.reset_index(drop=False,inplace=True)
# 열 이름 변경
pop.rename(columns={'index':'year'}, inplace=True)
# 확인
pop.head(10)
변경 - 이름 - 컬럼 이름 변경 rename
데이터프레임.rename( columns = { '변경 전 컬럼이름' : '변경 후 컬럼이름',
'변경 전 컬럼이름' : '변경 후 컬럼이름'} )
변경 - 이름 - 변경
pop.rename(columns={'index':'year'}, inplace=True)
# 확인
pop.head()
변경 - 이름 - 컬럼명 변경, 반복문
for i in feature:
i.rename(columns = {'이동거리(M)' :'이동거리',
'이용시간(분)':'이용시간'}, inplace =True)
for i in feature:
print(target_01.columns == i.columns)
변경 - 행 - 특정 컬럼에서 리스트 안에 있는 데이터와 일치하는 행만 남기기
import pandas as pd
# 예시 데이터프레임 생성
df = pd.DataFrame({
'음식명': ['잡곡밥', '땅콩연근조림', '생선까스', '김치찌개', '된장국'],
'가격': [5000, 6000, 7000, 8000, 9000]
})
# 특정 음식명만 포함하는 행을 필터링
filter_list = ['잡곡밥', '땅콩연근조림', '생선까스']
filtered_df = df[df['음식명'].isin(filter_list)]
filtered_df
변경 - 형식 - 변경 astype()
## 해당 칼럼의 dtype을 object --> float로 수정하기 : astype
danji_detail['임대보증금'] = danji_detail['임대보증금'].astype(float)
danji_detail['임대료'] = danji_detail['임대료'].astype(float)
## 확인하기 : info
danji_detail.info()
변경 - 형식 - to_datetime, to_period, astype(str) 모두 사용
from datetime import datetime
df_participate['일자'] = pd.to_datetime(df_participate['일자'])
df_participate['월별'] = df_participate['일자'].dt.to_period('M')
df_participate['월별'] = df_participate['월별'].astype(str)
df_participate.drop(['ID','일자'], axis = 1, inplace = True)
추가 - 컬럼 - 새로운 컬럼(column)을 추가
import pandas as pd
# 예시 데이터프레임 생성
df = pd.DataFrame({
'열1': [1, 2, 3],
'열2': [4, 5, 6]
})
# 새로운 열 추가 및 모든 행에 동일한 텍스트 데이터 할당
df['새로운열'] = '텍스트 데이터'
print(df)
추가 - 컬럼 - 새로운 컬럼 추가
import pandas as pd
# 예시 데이터프레임 생성 (3행)
df = pd.DataFrame({
'열1': [1, 2, 3],
'열2': [4, 5, 6]
})
# 리스트를 새 열로 추가
df['새로운열'] = ['밥', '김치', '된장']
print(df)
추가 - 컬럼 - 컬럼 추가, 리스트 형태
# 리스트를 포함하는 새 열 추가
df_competition['새로운열'] = [[1, 2], [3, 4]]
추가 - 컬럼 - 컬럼 추가, 컬럼 뺄셈
df_competition['진행기간'] = pd.to_datetime(df_competition['종료시간']) - pd.to_datetime(df_competition['시작시간'])
df_competition.head(3)
추가 - 컬럼 - 컬럼 추가, 특정 값으로 채우기
bicycle_merge = df[['stationName','stationLatitude','stationLongitude']].copy()
bicycle_merge['분류명'] = '자전거 대여소'
bicycle_merge
728x90
'데이터 - 전처리' 카테고리의 다른 글
데이터 전처리 정렬] (0) | 2024.01.06 |
---|---|
데이터 전처리 조회, 찾기, 탐색, 확인, 정보] (0) | 2024.01.06 |
데이터 전처리 삭제, 제거] (0) | 2024.01.06 |
데이터 전처리 결측치] (0) | 2024.01.06 |
데이터 전처리 날짜, date, Date] (0) | 2024.01.05 |