반복적으로 같은 형식으로 생산되는 여러 값을 이어붙이는 방법을 알아본다.
개요
반복문을 사용하거나 직접 값을 바꿔가면서 어떤 연산 결과를 산출하는 경우 그 값을 한 객체에 가지런히 적재하고 싶은 경우가 있다. 특히 이 작업은 머신러닝 모델 튜닝시 하이퍼파라미터를 변경함에 따른 평가지표를 산출하고 취합할 때 주로 사용된다.
물론 수동으로는 어찌 할 수 있어도 연산 결과값이나 객체가 많을 경우 그 한계를 느끼기 마련이다. 그래서 파이썬의 기본객체와 NumPy, Pandas 객체를 활용한 객체 병합 및 적재에 대해 알아보도록 한다.
참고로 이 게시물을 온전히 이해하기 위해서는 아래의 게시글을 충분히 숙지하는 것을 권장한다.
<파이썬 데이터분석 기초 시리즈>
04 - 객체(리스트)
10 - 제어문(for)
14 - NumPy
16 - Pandas(Series)
17 - Pandas(DataFrame)
34 - Pandas(Merge)
실습
리스트(list)
리스트 객체에 하나씩 출력되는 값을 순차적으로 저장해보도록 하자.
값이 저장되는 리스트 객체는 “ls_bind”이고 리스트 객체의 성질을 활용하여 +
연산자로 새로 생성되는 값을 리스트 객체의 원소로 넣어 리스트를 이어붙이는 방식을 사용한다.
1 | ls_bind = [] |
+=
연산자를 사용하여 다음과 같이 조금 더 간결하게 코드를 작성할 수 있다.
1 | ls_bind = [] |
딕셔너리(dictionary)
딕셔너리 객체를 사용해서도 비슷하게 작업을 수행할 수 있다.
1 | dict_bind = {} |
어레이(array)
NumPy 어레이 객체에 하나씩 출력되는 값을 순차적으로 저장해보도록 하자.
값이 저장되는 어레이 객체는 “arr_bind”이고 어레이 객체의 .append()
메서드를 사용하여 새로 생성되는 값을 어레이 객체의 원소로 넣어 이어붙이는 방식을 사용한다.
1 | import numpy as np |
시리즈(Series)
Pandas 시리즈 객체에 하나씩 출력되는 값을 순차적으로 저장해보도록 하자.
값이 저장되는 시리즈 객체는 “ser_bind”이고 이를 활용해서 원소를 추가하는 방법은 두 가지 방법을 소개하고자 한다. 첫 번째는 바로 인덱스를 지정하면서 원소를 추가하는 방식이고 두 번째는 concat()
함수를 활용하는 방식이다.
1 | import pandas as pd |
concat()
함수를 사용하는 경우 인덱스가 전부 0으로 되기 때문에 .reset_index()
메서드 사용을 권장한다.
데이터프레임(DataFrame)
값을 적재할 비어있는 데이터프레임 객체 “df_bind”를 생성하고 신규 값은 “df_sub” 객체에 데이터프레임으로 저장되며 concat()
함수로 두 객체를 순차적으로 이어붙인다.
1 | df_bind = pd.DataFrame() |
col1 | col2 | |
---|---|---|
0 | A | 0 |
1 | A | 1 |
2 | A | 2 |
3 | A | 3 |
4 | A | 4 |
최종적으로 만들어진 “df_bind” 객체는 1행짜리 데이터프레임을 이어붙인 경우 인덱스가 모두 0으로 되기 때문에 .reset_index()
메서드 사용을 권장한다.