'위로 부터 n개 행의 데이터 가져오기'에 해당되는 글 1건

  1. 2016.11.27 [Python pandas] DataFrame의 행 또는 열 데이터 선택해서 가져오기 (DataFrame objects indexing and selection)

지난번 포스팅에서는 Python pandas의 DataFrame 만들기, Attributes 조회하기에 대해서 알아보았습니다.

 

이번 포스팅에서는 DataFrame의 데이터를

 

 - (1) 행(row) 기준으로 선택해서 가져오기

 - (2) 열(column) 기준으로 선택해서 가져오기

 

방법(DataFrame objects indexing and selection by rows or columns)에 대해서 소개하겠습니다.

 

 

먼저, 필요한 Libraries 를 importing하고, 간단한 5행 3열의 DataFrame을 만들어 보겠습니다.

 

 

In [1]: import numpy as np

   ...: import pandas as pd

   ...: from pandas import DataFrame

   ...:

   ...: ##-- Making DataFrame

   ...: df_2 = DataFrame({'class_1': ['a', 'a', 'b', 'b', 'c'],

   ...:                          'var_1': np.arange(5),

   ...:                          'var_2': np.random.randn(5)},

   ...:                          index = ['r0', 'r1', 'r2', 'r3', 'r4'])

   ...:

   ...: df_2

Out[1]:

   class_1  var_1     var_2
r0       a      0  2.896618
r1       a      1 -0.113472
r2       b      2  0.261695
r3       b      3 -0.260788
r4       c      4 -0.791744

 

 

 

 

 

 (1) 행 기준으로 선택해서 가져오기 (indexing and selection by row)

 

DataFrame의 index 를 확인해보겠습니다.

 

 

In [2]: df_2.index # returning index

Out[2]: Index(['r0', 'r1', 'r2', 'r3', 'r4'], dtype='object')

 

 

 

'ix'를 사용하면 행 기준 indexing할 때 정수(int)와 행 이름(row label) 모두 사용할 수 있어서 편리합니다.

조건을 조금씩 달리해가면서 몇 가지 예를 아래에 들어보겠습니다. 서로 다른 점을 유심히 살펴보시면 어렵지 않게 사용법을 이해하실 수 있을 겁니다. 어렵지 않아요.

 

 

 

In [4]: df_2.ix[2:] # indexing from int. position to end

Out[4]:

   class_1  var_1     var_2
r2       b      2  0.261695
r3       b      3 -0.260788
r4       c      4 -0.791744

 

 

 

 

In [5]: df_2.ix[2] # indexing specific row with int. position

Out[5]:

class_1           b
var_1             2
var_2      0.261695
Name: r2, dtype: object

 

 

 

 

In [6]: df_2.ix['r2'] # indexing specific row with row label

Out[6]:

class_1           b
var_1             2
var_2      0.261695
Name: r2, dtype: object

 

 

 

 

데이터가 매우 많은 수의 행을 가지고 있을 경우에 위로 부터 n개의 행만 보고 싶은 때는 head(n) 메소드를 사용하면 됩니다.

 

 

In [7]: df_2.head(2) # Returns first n rows

Out[7]:

   class_1  var_1     var_2
r0       a      0  2.896618
r1       a      1 -0.113472

 

 

 

 

tail(n) 메소드는 행의 제일 마지막부터 n번째까지의 행 기준 데이터를 반환합니다.

 

 

In [8]: df_2.tail(2) # Returns last n rows

 

Out[8]:   

   class_1  var_1     var_2
r3       b      3 -0.260788
r4       c      4 -0.791744

 

 

 

 

 

 

 

  (2) 열 기준으로 선택해서 가져오기 (indexing and selection by column)

 

 

df_2 DataFrame의 열을 .columns 로 확인해 보겠습니다.

 

 

In [12]: df_2.columns
Out[12]: Index(['class_1', 'var_1', 'var_2'], dtype='object')

 

 

 

 

열(column) 기준으로 indexing할때는 '[ ]' 안에 열 이름(column label)을 'string' 형식으로 입력해주면 됩니다.

 

 

In [13]: df_2['class_1']

Out[13]:

r0    a
r1    a
r2    b
r3    b
r4    c
Name: class_1, dtype: object

 

 

 

 

두 개이상의 열(columns)을 가져오고 싶을 때는 튜플(tuple)을 사용해서 열의 이름을 나열해 주면 됩니다.

 

 

In [14]: df_2[['class_1', 'var_1']]

Out[14]:

   class_1  var_1
r0       a      0
r1       a      1
r2       b      2
r3       b      3
r4       c      4

 

 

 

이상으로 DataFrame Indexing and Selection에 대해서 마치겠습니다.

 

다음번 포스팅에서는 DataFrame index의 reindexing에 대해서 알아보겠습니다.

 

 

Posted by R Friend R_Friend

댓글을 달아 주세요