문제 개요
CSV 파일에 다음과 같은 데이터가 저장되어 있고, 이를 pandas.csv라는 이름으로 저장했다고 가정해 보겠습니다.
pandas.csv
Id,Data 1,11 2,22 3,33 4,44 5,55 6,66 7,77 8,88 9,99 10,100
마지막 두 레코드(9행과 10행)의 합계를 구하면 결과는 다음과 같습니다.
마지막 두 행의 합계: Id 19 Data 199
이 문제는 pandas 라이브러리를 활용해 여러 가지 방법으로 해결할 수 있습니다. 아래에서 대표적인 세 가지 방법을 살펴보겠습니다.
방법 1: tail() 함수 활용
다음 메서드를 사용해 CSV 파일에 저장된 데이터를 불러와
data변수에 저장합니다.
data = pd.read_csv('pandas.csv')데이터를 데이터프레임으로 변환한 뒤
df에 저장합니다.
df = pd.DataFrame(data)
tail()메서드로 마지막 두 레코드를 선택한 후sum()으로 합계를 계산합니다.
df.tail(2).sum()
예제
아래 구현 예제를 통해 더 자세히 이해할 수 있습니다.
import pandas as pd
data = pd.read_csv('pandas.csv')
df = pd.DataFrame(data)
print('Dataframe is\n', df)
print('Last two rows\n', df.tail(2).sum())실행 결과
Dataframe is Id Data 0 1 11 1 2 22 2 3 33 3 4 44 4 5 55 5 6 66 6 7 77 7 8 88 8 9 99 9 10 100 Last two rows Id 19 Data 199
방법 2: iloc 슬라이싱 활용
앞서와 동일하게 CSV 파일의 데이터를 불러와
data변수에 저장합니다.
data = pd.read_csv('pandas.csv')데이터를 데이터프레임으로 변환하여
df에 저장합니다.
df = pd.DataFrame(data)
슬라이싱 인덱스 방식을 적용해 마지막 두 레코드를 선택합니다.
df.iloc[-2:]
예제
아래 구현 예제를 참고하면 이해하기 쉽습니다.
import pandas as pd
data = pd.read_csv('pandas.csv')
df = pd.DataFrame(data)
print('Dataframe is\n', df)
print('Last two rows\n', df.iloc[-2:].sum())실행 결과
Dataframe is Id Data 0 1 11 1 2 22 2 3 33 3 4 44 4 5 55 5 6 66 6 7 77 7 8 88 8 9 99 9 10 100 Last two rows Id 19 Data 199
방법 3: 반복문과 조건문 활용
같은 방식으로 CSV 파일의 데이터를 불러와 데이터프레임으로 변환합니다.
data = pd.read_csv('pandas.csv')
df = pd.DataFrame(data)id_sum과data_sum의 초기값을 0으로 설정합니다.for 반복문으로 데이터프레임의 각 행에 접근하고, if 조건문으로 마지막 두 행만 처리하도록 합니다.
for i in range(len(df)):
if(i == len(df)-2 or i == len(df)-1):df.iloc[i][0]과df.iloc[i][1]을 사용해 첫 번째 열(Id)과 두 번째 열(Data)의 합을 각각 계산합니다.
id_sum = id_sum + df.iloc[i][0] data_sum = data_sum + df.iloc[i][1]
예제
전체 구현 코드는 다음과 같습니다.
import pandas as pd
data = pd.read_csv('pandas.csv')
df = pd.DataFrame(data)
id_sum = 0
data_sum = 0
for i in range(len(df)):
if(i == len(df)-2 or i == len(df)-1):
id_sum = id_sum + df.iloc[i][0]
data_sum = data_sum + df.iloc[i][1]
print('Id', id_sum)
print('Data', data_sum)실행 결과
Id 19 Data 199
정리
세 가지 방법 모두 동일한 결과를 반환하지만, 상황에 따라 적합한 방법이 다릅니다. tail()은 가장 직관적이고 간결하며, iloc[-2:] 슬라이싱은 위치 기반 인덱싱에 유연하게 대응할 수 있습니다. 반복문 방식은 코드가 길어지지만, 행 단위로 세부 로직을 추가해야 할 때 유용합니다. 일반적으로는 tail() 또는 iloc 슬라이싱을 사용하는 것이 효율적입니다.