데이터 결합 - merge, concat
2022. 3. 17. 23:30ㆍPython
pandas.merge : key 변수를 기준으로 두 개의 데이터 프레임을 병합(join)하는 함수
left : 통합 대상 데이터 프레임1
right : 통합 대상 데이터 프레임2
on : 통합 기준 key 변수 및 변수 리스트 (미입력시 이름이 같은 변수를 key로 식별)
left_on : 데이터 프레임1의 key 변수 및 변수 리스트
righr_on : 데이터 프레임2의 key 변수 및 변수 리스트
left_index : 데이터 프레임1의 인덱스를 key로 사용할 지 여부
right_index : 데이터 프레임2의 인덱스를 key로 사용할 지 여부
left_on, right_on을 사용한 데이터 통합
# 컬럼명을 바꿔도 똑같이 작동함
merged_df = pd.merge(df1, df2, left_on = "employee", right_on = "name")
merged_df.head() # employee와 name 모두 살아 있어서, 하나를 제거해줘야 함
merged_df.drop('name', axis = 1, inplace = True) #name 제거
merged_df.head()
index를 사용한 데이터 통합
merged_df = pd.merge(df1, df2, left_on = "employee", right_index = True)
merged_df.head()
pandas.concat
- 둘 이상의 데이터 프레임을 이어 붙이는데 사용하는 함수
- 통합해야 하는 데이터가 많은 경우에는 빈 데이터프레임을 생성한 뒤 concat함수 이용
objs : DataFrame을 요소로 하는 리스트 (입력 예시 : [df1, df2])로 입력 순서대로 병합이 됨
ignore_index : True면 기존 인덱스를 무시하고 새로운 인덱스르 부여(ex. 행 단위 결합), False면 기존 인덱스 사용(ex. 열 단위 결합시)
axis : 0이면 행 단위로 병합을 수행, 1이면 열 단위 병합을 수행
merged_df = pd.concat([pd.read_csv("일별 오염 데이터/" + file, sep = "\t", engine = "python")
for file in os.listdir("일별 오염 데이터") if '오염_수준.txt' in file])
os.listdir
os.listdir(path) : path상에 있는 모든 파일명을 리스트 형태로 반환
merged_df = pd.DataFrame() # 빈 데이터 프레임 생성
for file in os.listdir("일별 오염 데이터"):
if '오염_수준.txt' in file:
df = pd.read_csv("일별 오염 데이터/" + file, sep = "\t", engine = "python")
merged_df = pd.concat([merged_df, df], axis = 0, ignore_index = True)
merged_df.head()
xlrd을 이용한 엑셀 시트 목록 가져오기
xlrd는 엑셀 데이터를 다루기 위한 모듈로, 엑셀 내의 반복 잡업을 하기 위해 주로 사용함
wd = xlrd.openworkbook(file, on_demand = True) # 엑셀 파일을 불러와 wb에 저장
wb.sheet_name() #wb에 있는 시트 목록을 리스트 형태로 반환
import xlrd
wb = xlrd.open_workbook("월별매출데이터.xlsx", on_demand = True)
sheetnames = wb.sheet_names()
sheetnames
merged_df = pd.DataFrame()
for sn in sheetnames:
df = pd.read_excel("월별매출데이터.xlsx", sheet_name = sn, skiprows = range(6))
df = df.iloc[:, 1:] # 첫 번째 컬럼이 불필요하므로 제거
merged_df = pd.concat([merged_df, df], axis = 0, ignore_index = True)
merged_df
'Python' 카테고리의 다른 글
데이터 정렬 (0) | 2022.03.18 |
---|---|
pivot_table, groupby (0) | 2022.03.18 |
기초 통계 함수 (0) | 2022.03.18 |
Input / Output (0) | 2022.03.17 |
데이터 불러오기, 저장하기 (0) | 2022.03.17 |