본문 바로가기

파이썬 기초

파이썬 pandas 데이터 추출하기

pandas 데이터 추출하기

CSV, 엑셀 파일로부터 데이터 불러오기에 이어서 이번에는 pandas의 데이터 프레임으로부터 데이터를 추출하는 방법을 알아봅시다.

데이터 프레임(DataFrame)에서 열 데이터 추출하기

데이터 프레임에서 데이터를 열 단위로 추출하기 위해서는 대괄호 안에 열 이름을 입력해야 합니다. 이때 시리즈로 결과를 얻을 수 있으며 변수에 저장하여 사용 가능합니다.

2개 이상의 열을 추출할 때는 리스트에 복수개의 열 이름을 전달하면 한 번에 추출이 가능합니다. 이럴 경우에는 1개의 열이 아니라 2개 이상의 열이 추출되기 때문에 데이터 프레임이 반환됩니다.

 

실습을 위해서 타이타닉 승객 데이터를 이용해보겠습니다. 필요하신 분은 유첨 파일(titanic.csv) 다운로드하여 사용하시면 됩니다.

 

titanic.csv
0.06MB

 

 

우선 파일로부터 데이터를 불러와서 titanic_df라는 데이터 프레임에 저장합니다.

열 이름이 'Name'인 데이터만 가져오기 위해서 대괄호에 'Name'을 전달하고 결과는 name 변수에 저장하였습니다. name 데이터 자료형 확인을 위해 type(name)를 실행해 보면 pandas.core.series.Series가 출력됩니다. Series임을 확인할 수 있습니다. Series의 head() 메서드를 이용하여 5개의 데이터만 확인 가능합니다.

열 단위로 데이터 불러오기

 

2개 이상의 열을 한 번에 추출하기 위해서 리스트에 추출하고자 하는 열 이름을 입력하여 전달합니다.

승객 이름('Name'), 나이('Age'), 객실번호('Cabin') 열을 한 번에 추출하기 위해서 대괄호 안에 리스트 ['Name', 'Age', 'Cabin']을 전달하고 결과는 info_df에 저장하였습니다. info_df의 자료형은 하나의 열만 추출할 경우의 Series와 달리 DataFrame입니다.

2개 이상의 열 데이터 불러오기

 

 

 

 

데이터 프레임(DataFrame)에서 행 데이터 추출하기

데이터 프레임에서 데이터를 행 단위로 추출하려면 loc, iloc 속성을 사용해야 합니다.

  • loc: 인덱스를 기준으로 행 데이터 추출
  • iloc: 행 번호를 기준으로 행 데이터 추출

 

행 번호와 인덱스 구분하기

파이썬 리스트에서 0부터 시작하는 데이터의 순서를 나타내는 정수를 인덱스라고 표현합니다. 하지만 Pandas의 데이터 프레임에서는 이런 개념을 행 번호라고 합니다.

리스트의 인덱스, Pandas 데이터 프레임의 행 번호는 데이터를 출력하였을 때 확인이 안 되는 값입니다.

그러면 위에서 info_df에서 가장 왼쪽에 있는 열(0부터 시작하여 890까지)은 인덱스일까요? 행 번호일까요?

바로 인덱스입니다. 인덱스는 정수뿐만 아니라 문자로 지정할 수도 있습니다.

 

loc 속성으로 행 데이터 추출하기

대괄호 안에 인덱스를 전달하여 원하는 행 데이터를 추출할 수 있습니다.

그러면 데이터 프레임 info_df에서 인덱스가 0인 행 데이터를 추출해보겠습니다. 결과는 Series로 반환됩니다.

행 데이터 불러오기

loc의 속성을 사용할 경우 주의 사항은 없는 인덱스를 사용하면 KeyError 가 발생합니다.

 

원하는 2행 이상의 행 데이터를 추출하기 위해서는 행의 인덱스를 리스트로 만들어서 전달하면 됩니다. 결과는 데이터 프레임으로 반환됩니다.

만약 인덱스가 0, 3, 888, 890인 행 데이터를 한 번에 추출하기 위해서는 [0, 3, 888, 890]를 다음과 같이 전달하면 됩니다.

2행 이상의 데이터 불러오기

 

iloc 속성으로 행 데이터 추출하기

iloc는 데이터의 순서를 의미하는 행 번호를 사용하여 데이터를 추출합니다. 방법은 loc 속성을 사용할 때와 동일하지만 단지 리스트에서 [-1]를 사용하면 마지막 요소를 가져올 수 있는 것처럼 iloc 속성에 -1을 전달하면 마지막 행 데이터를 가져올 수 있습니다.

 

데이터 프레임에서 행, 열 데이터 추출하기

행과 열의 정보를 전달하여 원하는 영역의 데이터만 추출하는 방법에 대해서 알아봅시다.

loc와 iloc를 방법은 동일하며 데이터프레임.loc[행 인덱스, 열 이름]의 형태로 전달합니다.

주의할 내용은 반드시 행부터 지정하고 다음에 열을 지정하여야 합니다.

 

행 인덱스와 열 이름을 2개 이상을 지정할 때는 리스트에 담아서 지정하면 되고, 행 전체 또는 열 전체를 지정할 경우에는 콜론( : )을 사용하면 됩니다.

데이터프레임 행과 열 선택

 

 

데이터프레임 행과 열 복수로 선택

 

파이썬 리스트에서 사용하였던 슬라이싱 구문을 이용하여 다음과 같이 원하는 범위를 지정할 수 도 있습니다.

데이터프레임 슬라이싱 구문 이용하기

 

궁금한 점 있으면 댓을 주세요~