본문 바로가기

Aiffel_learning/Data_analysis

2-2. pandas : 데이터 불러오기, 합치기(concat, join, merge),내보내기

file 불러오기

import pandas as pd

# csv 파일 불러오기
data = pd.read_csv('titinic.csv')  # 데이터와 같은 폴더인 경우
data = pd.read_csv('data/titianic.csv')  # 데이터가 담겨있는 파일보다 상위폴더인 경우
data = pd.read_csv('/aiffel/data/titinic.csv')  # 위치가 다른 경우 전체 위치경로 포함시키기

# 엑셀파일 불러오기
data = pd.read_excel('파일경로.xlsx')

# JSON파일 불러오기
data = pd.read_json('파일경로.json')

csv file 내보내기

df.to_csv('output.csv', index=False)

데이터 합치기

concat

다 각각 이어붙여짐(인덱스도 그대로 각각, 같은 column만 합쳐짐)

# 세로로 이어붙이기(같은 column은 합쳐지고, 없는값은 NaN으로 들어감)
df_all = pd.concat([df_a, df_b, df_c])

# reset_index(같은 인덱스가 중복으로 있을테니)
# drop = True 안넣어주면 원래 있던 인덱스는 칼럼으로 남아있음
df_all.reset_index(drop = True)

# 가로로 이어붙이기(axis=1, key값이 같아도 합쳐지지 않음)
pd.concat([df_a, df_b], axis = 1)

merge

*on, how*는 쓰는 습관 두는게 좋

현업에서 제일 많이 씀.

공통된 칼럼이 있으면 suffix를 자동 생성됨. 

공통된 칼럼이 여러개 있으면 여러개를 전부 suffix로 잡아버림

df_a.merge(df_b, on = '기준칼럼명', how = 'join 방식')

how = 'inner', 'outer', 'left', 'right'

inner join : 공통된 key값을 가지는 것들만 추려서 합쳐짐

outer join : 공통되지 않은 값들도 합쳐지지만 값이 없는 곳은 NaN값 입력됨

left join : 왼쪽 dataframe 기준으로 왼쪽 꺼는 다 들어가고, 오른쪽꺼는 공통된것만 입력됨

right join : 오른쪽

on : 기준이 되는 key 값 지정

on 지정 안했는데 만약에 column값 종류가 여러개다 : 전부 다 겹치는 부분만 추려짐

column 값 이름이 다른 경우 :

df_a.merge(df_b, left_on = 'key', right_on = 'id', how = 'outer')

join

key를 index로 잡음 

공통된 칼럼이 있으면 suffix 수동으로 생성해줘야함

# 겹치는 칼럼을 _a, _b로 합침
df_a.join(df_b, lsuffix = '_a', rsuffix = '_b')

# suffix 수동생성
df_a = df_a.set_index('key')
df_b = df_b.set_index('key')
df_a.join(df_b)