1. 데이터프레임 합치기
- 데이터프레임 합치기
concat() |
|
reset_index() |
|
merge() | 특정 고유한 키(unique, id)값을 기준으로 합침 |
- 새로운 CSV 파일 다운 (결합할 데이터)
- 데이터 불러오고 복사
df1 = pd.read_csv('/content/drive/MyDrive/1. KDT/5. 데이터 분석/데이터/idol.csv')
df2 = pd.read_csv('/content/drive/MyDrive/1. KDT/5. 데이터 분석/데이터/idol2.csv')
df1
df2
# 첫번째 테이블 복사해서 사용하기
df_copy = df1.copy()
- 행으로 합치기
# 첫번째 테이블 복사해서 사용하기
pd.concat([df1, df_copy]) #axis = (기본값)
# 합친 테이블 넣어주기
df_concat = pd.concat([df1, df_copy])
# reset_index() : index를 새롭게 적용
# drop = True 옵션을 사용하여 기존 index가 칼럼으로 만들어지는 것을 방지
df_concat.reset_index(drop=True)
|
- 열로 합치기
# 열로 합치기
# df1과 df2를 열(axis=1)로 합친다
pd.concat([df1,df2], axis=1) # 같은 index와 결합
# df2에서 인덱스 1, 3, 5, 7에 해당하는 행을 제거
df3 = df2.drop([1,3,5,7])
df3
# df1과 df3를 열(axis=1)로 합치기 (같은 인덱스끼리 결합)
# 1,3,5,7은 데이터가 없어서 NaN
pd.concat([df1, df3], axis=1)
df_right = df2.drop([1,3,5,7,9], axis = 0)
df_right
# 순서가 0부터 새롭게 정렬 (reset)
df_right = df_right.reset_index(drop=True)
df_right
pd.concat([df1,df_right], axis=1)
- merge() 특정 고유한 키(unique, id) 값을 기준으로 합침
merge(데이터프레임1, 데이터프레임2, on='유니크값', how='병합의 기준')
left : 1번째 데이터 기준, 1번째 데이터 모두 출력 rihgt : 2번째 데이터 기준, 2번째 데이터 모두 출력 inner : 두 개다 같은 경우, 교집합인 데이터 출력 cross : 모든 데이터를 한번씩 다 출력, 경우의 수가 많음 |
pd.merge(df1, df_right, on='이름',how='left')
pd.merge(df1, df_right, on='이름',how='right')
# (1,3,5,7,9)정국,하니, 다니엘 없어짐 - 오른쪽 중심
pd.merge(df1, df_right, on='이름',how='inner')
#결과는 동일
pd.merge(df1, df_rigth, on='이름', how='cross') #오류
pd.merge(df1, df_right, how='cross')
#오류가 해결됨
|
✅ 문제 풀어보기
❔ df_right 데이터 프레임에 아래와 같은 데이터를 추가하고 df1과 merge를 하여 출력
추가할 행: '이름: 김사과, 연봉:7000, 가족수:10'
( 단, how=right 를 함 )
- dic 딕셔너리 행추가
# 추가할 행 딕셔너리 생성
dic = {
'이름' : '김사과',
'연봉' : 7000,
'가족수' : '10'
}
# 행 추가하기 concat() : 데이터를 합침, axis = 0 (기본값)
df_right = pd.concat([df_right, pd.DataFrame(dic, index=[0])], ignore_index=True)
df_right
- 추가한 데이터 테이블과 merge
# df_right와 df1 concat
pd.merge(df1, df_right ,how='right')
- df1과 df_right 데이터 테이블 열이름으로 합치기
# 데이터프레임의 열 이름을 '성함', '연봉', '가족수'로 변경
df_right.columns = ['성함', '연봉', '가족수']
df_right
# df1과 df_right 데이터 테이블 열 이름으로 합치기
# pd.merge(df1, df_right, on='이름', how='right') # KeyError: '이름' # 오류
pd.merge(df1, df_right, left_on='이름', right_on='성함', how='right')
'데이터분석 > 판다스' 카테고리의 다른 글
08. apply, map, 산술연산, 원 핫 코딩 (0) | 2024.05.24 |
---|---|
07. 등수, 날짜타입 (0) | 2024.05.24 |
05. 그룹, 중복값제거 (0) | 2024.05.24 |
04. 행, 열 추가 삭제, 통계함수 (0) | 2024.05.24 |
03. 결측값(NULL, NaN) (0) | 2024.05.24 |