빅데이터 분석기사[python]/pandas와 기본 데이터 처리

[python 파이썬, pandas 판다스] DataFrame 열(column) & 행(row) 불러오기

sunning 2022. 5. 9. 23:54
728x90
반응형

파이썬의 pandas에서 데이터프레임 형태로 데이터를 불러왔다면 이것을 확인하는 방법을 알아야한다.  데이터는 많은 행과 열로 이루어져 있으며 데이터에 따라 그 개수도 천차만별이다. 이것을 행 기준의 특정 부분, 혹은 열 기준의 특정 부분만 확인하려면 어떻게 해야할까?

예시로 사용할 데이터는 kaggle에서 다운로드받은 IRIS.csv 데이터를 사용하겠다. 먼저 pd.read_csv를 활용하여 데이터를 불러오자.

행(row) 기준 확인/불러오기

맨 앞 & 맨 뒤의 행 확인 : head(), tail()

  • 변수명.head(불러올 행 개수) : 앞에서부터 n개의 행 확인
  • 변수명.tail(불러올 행 개수) : 뒤에서부터 n개의 행 확인

head와 tail 모두 괄호 안이 공백이면 5개의 행만 출력한다. 150개의 행을 가진 데이터프레임으로 예시를 들어보면 아래와 같다. DF.head()는 괄호 안이 공백이므로 맨 위부터 5개의 행만 불러오고 DF.tail(3)은 맨 끝에서부터 3개의 행만 불러와서 확인할 수 있다.

 

특정한 연속 행 확인

  • 변수명[확인할 첫 행 index:확인할 마지막 행 index+1]

맨 첫 행부터 n 행까지를 확인하고 싶으면 [0:n+1]도 가능하고 0을 생략한 [:n+1]도 가능하다. 반대로 n행부터 맨 끝 행까지를 확인하고 싶으면 [n:]도 가능하다.

열(column) 기준 확인/불러오기

열을 기준으로 데이터프레임을 불러오는 방법은 크게 세 가지가 있다.

1) 데이터셋명[['column 명']]

이때 데이터셋명['column 명']으로 불러오면 DataFrame 형태가 아닌 Series 형태로 불러와짐에 유의하자. [['칼럼 명']]으로 되어야 데이터프레임이 됨에 명심!!

 

2) 데이터셋명[데이터셋명.columns[[column 번호]]]

칼럼 명이 아닌 칼럼 번호(칼럼 인덱스)로 불러오기 위해서는 columns라는 모듈을 사용한다.

데이터셋명.columns를 프린트해보면 아래와 같이 데이터의 칼럼명이 담긴 리스트가 출력된다.

이 중 필요한 칼럼명의 인덱스를 [[]]에 넣어 그 자체를 리스트로 만들어 출력하면 필요한 컬럼명들이 리스트에 담긴다.

데이터셋명 뒤에 이 리스트를 붙이게 되면 데이터프레임 중 해당 칼럼을 가진 값들이 출력된다.

 

3) 데이터셋명.loc[:, 첫 열 이름 : 끝 열 이름]

또한 .loc을 활용하여 아래와 같이 연속된 컬럼명을 활용하여 불러올 수도 있다. 그 전에 loc과 iloc의 차이점을 알면 좀 이해하기 쉬울 것이다.

  • loc : row, column의 index 라벨 값을 기준으로 데이터 추출
    ex) loc[0, "sepal_length"] : row index가 0이고 column명이 sepal_length인 데이터 추출
  • iloc : row, column의 순서에 해당하는 정수를 기준으로 데이터 추출 (보편적으로 많이 사용)
    ex) iloc[0, 1] : row 기준 0번째, column 기준 1번째 데이터 추출

이때 모든 행을 기준으로, 혹은 모든 열을 기준으로 불러오고 싶은 경우에는 행이나 열의 값 대신 :(콜론)을 사용해서 인덱싱할 수 있다.

아래의 예시는 모든 행을 기준으로 칼럼명이 sepal_length부터 petal_length에 해당하는 연속적인  데이터를 추출하는 예시이다.

 

특정 행(row)과 특정 열(column)에 해당하는 데이터 인덱싱

앞에서는 행을 기준으로, 열을 기준으로 조건에 해당하는 데이터를 불러오는 방법을 살펴보았다. 그럼 행과 열 기준으로 둘 다 인덱싱하고 싶을 땐 어떻게 할까? 바로 앞에서 설명한 iloc과 loc을 활용하면 된다.

  • 데이터셋명.loc[행 index 이름 범위 , 컬럼명 범위]
  • 데이터셋명.iloc[행 index 번호(순서) 범위 , 컬럼 번호 범위]
행 이름 자체가 숫자로 되어있으므로 행은 숫자로 인덱싱해줌.
행 번호의 범위는 [인덱싱 첫 번호:인덱싱 끝 번호]로 지정.
행과 열 모두 첫 번호는 0부터 시작함.
행과 열 번호의 범위는 [인덱싱 첫 번호:인덱싱 끝 번호+1]로 지정.

또한 하나의 값을 지정해서 불러오려면 at이라는 명령어를 사용할 수도 있다.

 

728x90
반응형