Python to AI

Python - Pandas(데이터 변형 : 정렬, 병합)

최 수빈 2024. 12. 9. 13:15

 

정렬

 

sort_values()를 사용한 값(Value) 기준 정렬

- 특정 열의 값을 기준으로 데이터 오름차순 또는 내림차순 정렬

import pandas as pd

#예시 데이터프레임 생성
data = {
    '이름':['철수','영희','민수','지수'],
    '나이':[25,30,22,35],
    '직업':['학생','회사원','학생','프리랜서']
}
df = pd.DataFrame(data)

#'나이'기준으로 오름차순 정렬
sorted_df = df.sort_values(by='나이')
sorted_df

 

#'나이'기준으로 내림차순 정렬
sorted_df_desc = df.sort_values(by='나이', ascending=False)
sorted_df_desc

 

sort_values()를 사용한 여러 열 기준 정렬 - 우선순위에 따라 첫 번째 열부터 정렬됨

#'직업'을 기준으로, 같은 직업 내에서 '나이' 오름차순 정렬
sorted_df_multi = df.sort_values(by =['직업','나이'])
sorted_df_multi

 

sort_index()를 사용한 인덱스 기준 정렬

#인덱스 기준으로 정렬
sorted_index_df = df.sort_index()
sorted_index_df

#인덱스를 내림차순으로 정렬
sorted_index_df_desc = df.sort_index(ascending = False)
sorted_index_df_desc

 

 

 

병합

 

merge()를 사용한 데이터프레임 병합

= SQL의 JOIN과 유사하게 두 데이터프레임을 공통 열을 기준으로 병합

#예시 데이터프레임 생성
df1 = pd.DataFrame({
    '이름' : ['철수','영희','민수'],
    '나이':[25,30,22]})
df2 = pd.DataFrame({
    '이름': ['철수','영희','지수'],
    '직업':['학생','회사원','프리랜서']
})

#'이름'을 기준으로 병합
merged_df = pd.merge(df1,df2, on='이름')
merged_df

 

다양한 merge()방식


inner(기본값) : 공통된 데이터만 병합
outer : 공통되지 않은 데이터도 포함하여 병합, 없는 값은 NaN으로 채움
left : 왼쪽 데이터프레임 기준으로 병합
right : 오른쪽 데이터프레임 기준으로 병합

 

#outer join을 사용한 병합
merge_df_outer = pd.merge(df1, df2, on='이름', how = 'outer')
merge_df_outer

 

concat()을 사용한 데이터프레임 연결

= 행(row) 또는 열(column)단위로 데이터프레임 연결

#행 단위로 데이터프레임 연결
concat_df = pd.concat([df1,df2], axis =0)
concat_df

#열 단위로 데이터 프레임 변경
concat_df_axis1 = pd.concat([df1,df2], axis =1)
concat_df_axis1

 

join()을 사용한 데이터프레임 병합

- 인덱스를 기준으로 데이터프레임 병합

#예시 데이터프레임 생성
df3 = pd.DataFrame({
    '직업':['학생','회사원','프리랜서'],
    '연봉':[2000,3000,4000]
}, index = ['철수','영희','지수'])

#인덱스를 기준으로 병합
joined_df = df1.set_index('이름').join(df3)
joined_df

 

 

 

 

특징 merge join
기준 키(column)를 기준으로 결합 인덱스(index)를 기준으로 결합
사용 맥락 데이터프레임 간의 열(column) 결합 데이터프레임 간의 인덱스(index) 결합
SQL 유사성 SQL의 JOIN과 유사 SQL의 JOIN과 간접적으로 유사
사용성 더 세부적인 열 지정 가능(on, left_on 등) 주로 인덱스 기반으로 결합(열 기준은 부가적)