정렬
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 등) | 주로 인덱스 기반으로 결합(열 기준은 부가적) |
'Python to AI' 카테고리의 다른 글
Python - Pandas(데이터 전처리 : isna(), isnull() ) (3) | 2024.12.10 |
---|---|
Python - Pandas(데이터 변형 : 그룹화, 집계, 피벗테이블) (4) | 2024.12.09 |
Python - Pandas(feat.isin(), astype()) (0) | 2024.12.08 |
Python - Pandas(feat. titanic.csv) (0) | 2024.12.05 |
Python - Pandas(feat. CSV, JSON, XLSX, sqlite3) (0) | 2024.12.04 |