R 데이터 분석에서도 그랬듯이 필요한 데이터를 따로 추출해서 사용할 수 있다. 판다스에서는 데이터를 따로 추출하는데 있어서 열로 추출하기, 행으로 추출하기 두가지 방법이 존재한다. 각각의 방법에 대해서 알아보자
1 . 열 단위 데이터 추출하기
열 단위로 데이터를 추출할 때는 대괄호, 열 이름이 사용된다. 열 이름은 작은 따옴표로 묶어준다. 열 단위로 데이터를 출력할때
1개의 열만 추출하면 자료형은 -> 시리즈(series)
2개이상의 열을 추출하면 자료형은 -> 데이터 프레임(Data Frame)
이 된다. 우선 간단히 열 단위로 데이터를 추출해보자. 만약 갭마인더 데이터 집합에서 필자가 country라는 열의 데이터만 추출하고 싶다고 하자 그러면 다음과 같이 코드를 입력해 주면 된다.
형태를 보면 알겠지만 (데이터 프레임변수명)['열의 이름'] 형식으로 작성하여 해당 열의 데이터를 추출한다. 여기서는 ex1이라는 변수에 추출한 열의 데이터를 저장하였다. 우선 이 예시에서는 1개의 열만 추출하였다. 즉 자료형은 '시리즈'가 되어야 한다는 뜻이다. 한번 type()메소드로 확인을 해보고 head()함수로 대략적인 데이터를 확인하자
위에서 결과값을 보면 알 수 있듯이 1개의 열만 추출하였기 때문에 자료형은 series로 나오고 head()를 통해 상위 5개의 데이터가 잘 나오는것을 볼 수 있다.
이번에는 2개 이상의 열을 추출해 보자. 2개 이상의 열을 추출하기 위해서는 열의 이름을 리스트 형태로 매개변수로 넣어주어야 한다. 이번에는 필자가 country, year,pop이라는 이름을 가진 열의 값을 추출하고 싶다고 하자. 그러면 다음과 같이 작성해 주면 된다.
해당 사진에서 보면 알 수 있고 말했듯이 2개 이상의 열을 추출하기 위해서는 매개변수로 리스트 형태로 넣어주어야 한다. 이번에는 추출하려는 열의 개수가 2개 이상이기 때문에 이의 자료형은 분명히 데이터 프레임 형식일 것이다. 한번 type()메소드로 확인해보고 결과값을 출력해 보자.
결과값을 보면 3개의 열의 추출값이 저장된 ex2의 자료형은 Data Frame이라고 출력되는것을 볼 수 있다.
2 . 행 단위로 데이터 추출하기
이번에는 행 단위로 데이터를 출력해 보자. 행 단위로 데이터를 출력하기 위해서는 loc, iloc이라는 속성을 이용해 주어야 한다. loc과 iloc의 각각의 설명은 다음과 같다
속성 |
설명 |
iloc |
인덱스를 기준으로 행 데이터 추출 |
loc |
행 번호를 기주능로 행 데이터를 추출한다. |
파이썬에서의 인덱스라면 리스트와 같은 데이터 타입(Data Type)에 저장된 순서를 의미하는거로 배웠을 것이다. 허나 이러한 파이썬의 인덱스 개념을 판다스에서는 '행 번호'라고 명명한다. 인덱스는 다소 다른 의미로 활용된다.
그렇다면 어느점에서 다른것인가? 우선 해당 결과 표를 살펴보자
해당 결과표에서 파란색 부분을 인덱스라고 한다. 인덱스의 특징은 일반적으로 0부터 시작하며, 데이터 추가 삭제등이 가능하고 숫자가 아닌 '문자열'을 사용해서 나타낼 수 도 있다.(a,b,c와 같이)
판다스에서의 행 번호(파이썬에서의 인덱스개념)는 데이터의 나열 순서를 따른다. 즉 데이터 조회 및 추출을 위해서는 정수만 이용해야 한다.
우선 loc속성을 이용해 행 단위 데이터 추출을 해보자. 만약 인덱스가 0, 1000인 데이터를 각각 추출한다고 하자. 그러면 다음과 같이 코드를 입력해 주면 된다.
여기서 만약 데이터의 마지막 값을 추출하고 싶다고 하자. 데이터 집합의 하위부분의 데이터를 추출하는 방법으로는 두가지가 있다. 우선 하나는 shape속성을 쓰면 행, 열의 개수가 순서대로 튜플 형태로 추출이 된다. 결론적으로 보면 행같은 경우에는 파이썬에서의 색인이 0번이다. 하지만 판다스의 기본 인덱스를 보면 0부터 시작하기 때문에 맨 마지막 데이터의 인덱스는 (행의 개수 -1)번이 될것이다. 코드로 보면 다음과 같다.
우선적으로 df(앞에서 선언한 데이터 프레임 명)의 shpae속성의 결과값에서 0번째 색인, 즉 (행, 열) 형태로 결과가 나오는것중 행의 개수를 last_row변수에 저장을 해준다. 그 다음 인덱스가 일반적으로 0부터 시작하기에 가장 마지막 행의 인덱스 값은 행의 개수 -1 개 이므로 행의 전체 개수인 last_row에서 -1을 하여 인덱스 값으로 넣어주었다.
두번째 방법은 tail()메소드를 이용해 주는 것이다. tail()메소드에 n이라는 매개변수를 넣어주면, 해당 데이터 집합의 맨 뒤부터 n개의 행의 데이터를 출력하겠다는 의미가 된다. 코드로 보면 다음과 같다.
해당 tail()메소드의 매개변수 개념은 head()메소드에서도 동일하게 해당한다. head()메소드에 n = 10이라는 매개변수 값을 넣어주었다. 이는 즉 최상위부터 10개를 출력하겠다는 의미가 되는것이다.
만약 내가 광대한 데이터들중 일부 데이터만 뽑아서 추출하고 싶다고 가정하자. 그런 경우 loc속성의 매개변수 안에 리스트 형태로 자신이 출력하고 싶은 인덱스를 입력해 주면 된다. 예시로 필자가 90,91,99번째 인덱스의 값을 추출하고 싶다고 하자. 그러면 사진과 같이 loc속성의 매개변수로 자신이 추출하고자 하는 인덱스 값이 담긴 리스트를 넣어주면 된다.
tail()메소드를 이용하는 방법과 loc속성을 이용하는 방법의 차이점이 한가지가 있다. 바로 반환하는 자료형이 다르다는 점이다. loc속성에 의한 반환값은 series형태의 자료형을 띄는 반면 tail()메소드로 반환값을 받으면 데이터 프레임 자료형을 반환한다.
이번에는 iloc속성 활용에 대해 살펴보자. iloc속성은 행 번호를 이용해 데이터를 추출한다고 되어있다. 행 번호는 앞에서도 말했듯이 데이터의 순서를 의미한다. 기본적인 접근 방식은 loc속성과 동일하다.
다른점이라면 loc같은 경우에는 '인덱스'를 사용한다고 하였다. 데이터 집합의 삽입 삭제 등에 의한 변동이 되고 인덱스를 문자열로 표기해도 되는 등의 특성이 있어서 loc은 음수를 사용하여 데이터를 추출하는것이 불가능 하였다. 하지만 iloc은 데이터 순서를 의미하는것에 의한 접근을 하기에 파이썬의 색인번호와 동일하게 음수를 통한 데이터 추출이 가능하다. 예를 들어 -1이면 맨 마지막 행이다.(음의 색인은 -1부터 시작이며 방향은 오른쪽에서 왼쪽)
loc과 동일하게 여러개의 행을 추출할 때도 동일한 방식을 사용한다.
'DataAnalysis > Python Pandas' 카테고리의 다른 글
기초 통계 계산 with Pandas (0) | 2019.02.26 |
---|---|
loc, iloc 활용해 보기 (0) | 2019.02.25 |
판다스 & 파이썬 자료형 비교 (0) | 2019.02.25 |
판다스 시작하기 (0) | 2019.02.25 |
Pandas 포스팅 시작에 앞서 (0) | 2019.02.25 |