이 글에서는 products.csv 파일에서 데이터를 읽어온 뒤, 행(row)과 열(column)의 개수를 출력하고, 처음 10개 행 중에서 'product' 열의 값이 'Car'와 일치하는 데이터만 필터링하여 출력하는 방법을 알아봅니다.
문제 정의
다음과 같은 'products.csv' 파일이 있다고 가정해 보겠습니다. 이 파일에서 행과 열의 개수를 구하고, 첫 10개 행에서 'product' 열 값이 'Car'인 데이터를 추출하면 결과는 아래와 같습니다.
Rows: 100 Columns: 8
id product engine avgmileage price height_mm width_mm productionYear
1 2 Car Diesel 21 16500 1530 1735 2020
4 5 Car Gas 18 17450 1530 1780 2018
5 6 Car Gas 19 15250 1530 1790 2019
8 9 Car Diesel 23 16925 1530 1800 2018
이 문제는 두 가지 방법으로 해결할 수 있습니다.
해결 방법 1: iloc 활용하기
1단계: products.csv 파일에서 데이터를 읽어 df에 할당합니다.
df = pd.read_csv('products.csv')2단계: 행의 개수는 df.shape[0], 열의 개수는 df.shape[1]로 확인할 수 있습니다.
3단계: iloc[0:10,:]을 사용하여 df에서 첫 10개 행만 추출한 후 df1에 할당합니다.
df1 = df.iloc[0:10,:]
4단계: df1.iloc[:,1]로 product 열의 값을 가져와 'Car'와 일치하는지 비교합니다.
여기서 product 열의 인덱스는 1입니다. 마지막으로 조건에 맞는 데이터를 출력합니다.
df1[df1.iloc[:,1]=='Car']
예제 코드
아래 코드를 통해 더 자세히 이해해 보겠습니다.
import pandas as pd
df = pd.read_csv('products.csv')
print("Rows:",df.shape[0],"Columns:",df.shape[1])
df1 = df.iloc[0:10,:]
print(df1[df1.iloc[:,1]=='Car'])
실행 결과
Rows: 100 Columns: 8
id product engine avgmileage price height_mm width_mm productionYear
1 2 Car Diesel 21 16500 1530 1735 2020
4 5 Car Gas 18 17450 1530 1780 2018
5 6 Car Gas 19 15250 1530 1790 2019
8 9 Car Diesel 23 16925 1530 1800 2018
해결 방법 2: head()와 열 이름 활용하기
1단계: products.csv 파일에서 데이터를 읽어 df에 할당합니다.
df = pd.read_csv('products.csv')2단계: 행의 개수는 df.shape[0], 열의 개수는 df.shape[1]로 출력합니다.
3단계: df.head(10)으로 첫 10개 행을 가져와 df1에 할당합니다.
df1 = df.head(10)
4단계: 아래 방법으로 product 열의 값이 'Car'와 일치하는 데이터를 추출합니다.
df1[df1['product']=='Car']
이번에는 실제 구현 코드를 살펴보며 더 깊이 이해해 보겠습니다.
예제 코드
import pandas as pd
df = pd.read_csv('products.csv')
print("Rows:",df.shape[0],"Columns:",df.shape[1])
df1 = df.head(10)
print(df1[df1['product']=='Car'])
실행 결과
Rows: 100 Columns: 8
id product engine avgmileage price height_mm width_mm productionYear
1 2 Car Diesel 21 16500 1530 1735 2020
4 5 Car Gas 18 17450 1530 1780 2018
5 6 Car Gas 19 15250 1530 1790 2019
8 9 Car Diesel 23 16925 1530 1800 2018
정리
Pandas의 shape 속성은 DataFrame의 크기를 (행 개수, 열 개수) 형태의 튜플로 반환합니다. shape[0]은 행 개수를, shape[1]은 열 개수를 나타냅니다.
첫 번째 방법인 iloc는 위치 기반 인덱싱으로 열 이름 대신 숫자 인덱스(여기서는 1)를 사용하며, 두 번째 방법인 head()와 열 이름 직접 접근 방식은 코드의 가독성이 더 좋아 실무에서 널리 사용됩니다. 상황에 맞게 두 방식을 선택하여 사용하면 됩니다.