Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 CSV 파일 데이터를 읽어 마지막 두 행의 합계 출력하기

문제 개요

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_sumdata_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 슬라이싱을 사용하는 것이 효율적입니다.