AI Big Data/pandas

데이터 추출하기

retro_blue 2020. 7. 6. 16:54
반응형

1. 행 단위 데이터 추출하기

 

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

 

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

iloc : 행 번호를 기준으로 행 데이터 추출

 

빨간 사각형 안에 들어간 0~4까지의 숫자는 데이터프레임의 인덱스입니다.

인덱스는 보통 0부터 시작하지만, 행 데이터의 변동이 있을 경우 0이 아닌 숫자가 먼저 올 수 있습니다.

또한 숫자 뿐만 아니라 first, second, third와 같이 문자열로도 지정이 가능합니다.

 

반면, 행 번호는 데이터의 순서를 따라갑니다. 반드시 정수만으로 데이터를 조회/추출 할 수 있으며

실제 데이터프레임에서는 확인이 불가능합니다.

 

1-1. loc 속성 사용하여 데이터를 추출하기

 

다음은 인덱스가 0인 행 데이터를 추출하였습니다.

'Afghanistan' 의 15세 이상 고용률 데이터를

1991년부터~ 쭉 살펴볼 수 있습니다.

 

 

인덱스 번호가 144인 'South Korea' 의 데이터를 추출하였습니다.

head() 와 tail() 메서드를 사용하여

처음과 끝, 각 5개씩 데이터를 추출했습니다.

 

 

 

 

 

 

 

만약 -50, -100 처럼 인덱스에 없는 값을 사용하면 어떻게 될까요?

 

인덱스에 없는 값을 사용하니 오류가 발생했습니다!

 

데이터프레임의 마지막 행 데이터를 추출하려면 어떻게 할까요?

tail() 메서드를 이용하여, 인자 n에 1을 전달하는 방법이 있습니다.

2를 전달하면 2개의 데이터를 추출할 수 있습니다. 원하는 만큼 n의 값을 조정할 수 있습니다. (기본값은 5)

 

# shape() 메서드를 사용해서 구해보기

데이터프레임의 마지막 행 데이터의 인덱스를 알아내야 합니다.

이 때 shape 메서드를 사용하여 행의 크기를 알 수 있습니다.

행의 크기가 179입니다.

 

 

하지만 인덱스는 0부터 시작했기 때문에 우리는 여기서 1을 뺀 값을 찾아야 합니다.

 

 

 

인덱스가 10, 20, 30인 데이터를 한 번에 추출하려면 리스트에 원하는 인덱스를 담아 loc 속성에 전달하면 됩니다.

 

 

★ 주 의 !  'tail 메서드와 loc 속성이 반환하는 자료형은 서로 다르다 ! '

 

loc 속성이 반환한 데이터 자료형은 시리즈,

tail 속성이 반환한 데이터 자료형은 데이터프레임 !

 

 

 

 

1-2. iloc 속성 사용하여 데이터를 추출하기

 

 

loc 속성은 데이터프레임의 인덱스를 사용하여 데이터를 추출했습니다.

하지만 iloc 속성은 데이터 순서를 의미하는 행 번호를 사용합니다.

 

데이터프레임의 인덱스 번호와 행 번호가 같아 같은 값이 추출 되었습니다.

loc 속성에서는 음수를 사용했을 때 오류가 발생했습니다.

하지만 iloc 에서는 추출에 성공했습니다.

-1를 입력하여 마지막 행 데이터를 추출하였습니다.

 

 

 

 

존재하지 않는 행 번호를 입력하니 역시 오류가 발생했습니다.

 

 

loc 와 마찬가지로 여러 데이터를 한 번에 추출할 수 있습니다.

 

1-3. loc, iloc 속성을 자유자재로 사용하여 데이터 추출하기

 

0, 50, 100번째 행의 0, 10, 20, 30번째 열 데이터 추출하기
loc 속성을 사용하여 열 지정값으로 열 이름 전달

보통은 작성한 코드가 어떤 데이터를 추출하기 위한 코드인지 파악하기 위해 loc 속성을 이용해 전달한다.

 

슬라이싱 구문 활용하기

 

 

2. 열 단위 데이터 추출하기

데이터프레임에서 데이터를 열 단위로 추출하려면 대괄호와 열 이름을 사용해야 합니다.

이때 열 이름은 반드시 작은따옴표를 사용해서 지정해야 하며, 추출한 열을 따로 변수에 저장하여 사용할 수도 있습니다.

 

1개의 열만 추출할 경우 시리즈(Series)를, 2개 이상의 열을 추출하면 데이터프레임(DataFrame)을 얻을 수 있습니다.

 

2-1. 열 1개 추출하기

'country' 열만 추출하였기 때문에 데이터의 자료형은 시리즈라는 것을 확인할 수 있습니다.

head() 메서드상위 5개의 데이터를, tail() 메서드하위 5개의 데이터를 출력해줍니다.

 

2-2. 2개 이상의 열 추출하기

 

 

2000년, 2010년, 2020년 열의 데이터를 추출해보았습니다.

2개 이상의 열을 추출했기 때문에 데이터의 자료형은 시리즈가 아닌 데이터프레임입니다.

 

 

 

3. 슬라이싱 구문, range 메서드를 이용하여 데이터 추출하기

 

3-1. 슬라이싱 구문으로 데이터 추출하기

 

* python slicing(파이썬 슬라이싱) 이란 ?

- 연속적인 객체들 (리스트, 튜플, 문자열 등)의 범위를 지정한 후 객체들을 가져오는 것

- 슬라이싱을 하면 새로운 객체가 생성됩니다. 

 

모든 행(:)의 데이터에 대해 2010년도와 2020년도 열을 추출하는 방법을 알아보도록 하겠습니다.

이때 loc와 iloc 속성애 전달하는 열 지정값은 반드시 형식에 맞게 전달해야 합니다.

iloc 속성의 열 지정값에 문자열 리스트를 전달하면 오류가 발생합니다.

 

열 지정값에 정수 리스트를 전달하였다

 

3-2. range 메서드로 데이터를 추출하기

 

이번에는 iloc 속성과 파이썬 내장 메서드인 range를 응용해보겠습니다.

iloc 속성의 열 지정값에는 정수 리스트를 전달해야한다는 점을 이용하게 됩니다.

 

* range : 지정한 구간의 정수 리스트를 반환

 

사실 range 메서드는 지정한 범위의 정수 리스트를 반환하는 것이 아니라 제너레이터를 반환합니다.

iloc 속성은 제너레이터로 데이터 추출을 할 수 없습니다.

그렇기 때문에 range가 반환한 제너레이터를 정숫값을 가진 리스트로 변환하여 iloc의 열 지정값에 전달합니다.

 

0~4 범위의 정수 리스트를 구해보았습니다.

0~4 범위에 해당되는 'country' 열 및 1991년부터 1994년까지의 고용률의 상위 5개의 값이 출력되었습니다.

 

 

이번에는 2010년대의 데이터 값을 확인하고자 범위를 지정하였습니다.

20~29 범위의 정수 리스트 (2010년대) 를 구하여 고용률 값을 추출하였습니다.

 

# range 메서드에 3개의 인자를 전달한다면?

 

1부터 30까지 5만큼 건너뛰는 제너레이터가 생성되었습니다.

이 제너레이터를 리스트로 변환하면 (1, 6, 11, 16, 21, 26) 이 됩니다.

 

 

3-3. 슬라이싱 구문과 range 메서드를 비교해보자.

 

슬라이싱 구문과 range 메서드 둘 다 자주 사용하지만, 실무에서는 슬라이싱 구문을 더 선호합니다.

range 메서드는 제너레이트를 리스트로 변환하는 등의 과정들이 필요하지만, 슬라이싱 구문은 필요가 없기 때문입니다.

list(range(5)) 라고 쓰는 것보다 [:5] 라고 쓰는 게 간소하면서도 더욱 편리하기 때문입니다.

 

동일한 결괏값을 출력하였습니다.

 

4. 원하는 행/열 데이터 추출하기

 

'각 나라별 15세 이상 고용률' 데이터에서 내가 필요로 하는 데이터를 추출하는 방법을 배워보도록 하겠습니다.

 

1991년부터 2022년까지의 데이터 중 5년 단위로 (1995, 2000, 2005, 2010, 2015, 2020) 만 추출해보겠습니다.

 

type 메서드를 사용하면 year5_df에 저장된 데이터의 자료형이 데이터프레임이라는 것을 알 수 있습니다.

179개의 나라 중 5개 (대한민국, 미국, 일본, 러시아, 중국) 만 따로 추출해보겠습니다.

 

 

isin() 메서드는 Series나 DataFrame 안에 isin() 메서드에 입력된 데이터가 있는지 판별해주는 역할을 합니다.

입력된 데이터는 'True' 값을, 입력되지 않은 데이터에는 'False' 를 출력합니다.

여기서 True, False 값들을 다시 year5_df 데이터프레임에 적용해주면 끝 !

 

결괏값으로 주요 5개국15세 이상 고용률 5년 주기 데이터가 추출되었습니다.

 

 

 


[참고자료]

(Data) Gapminder (https://www.gapminder.org/data/)

 

Data

Data The table below lists all indicators displayed in Gapminder World. Click the name of the indicator or the data provider to access information about the indicator and a link to the data provider. Indicators labeled “Various sources” are compiled b

www.gapminder.org

(Book) Do it! 데이터 분석을 위한 판다스 입문 (Chen. Daniel Y 저) - 이지스퍼블리싱

Do it! 데이터 분석을 위한 판다스 입문
국내도서
저자 : 다니엘 첸(Chen, Daniel Y.) / 김영하역
출판 : 이지스퍼블리싱 2018.10.11
상세보기

(Documents) pandas: powerful Python data analysis toolkit (https://pandas.pydata.org/docs/pandas.pdf)

반응형

'AI Big Data > pandas' 카테고리의 다른 글

시리즈 다루기  (0) 2020.07.08
나만의 데이터 만들기  (0) 2020.07.07
기초적인 통계 계산하기  (2) 2020.07.06
데이터 집합 불러오기  (0) 2020.07.06
pandas 설치하기  (0) 2020.07.06