본문 바로가기

Pandas

Pandas 데이터 추출, 활용 하기 : loc, iloc 활용 [슬라이싱]

반응형

Pandas 데이터 추출, 활용 하기 : loc, iloc 활용 [슬라이싱]


슬라이싱을 이용하여 iloc와 loc를 활용한 방법입니다. 실무에서 매우 유용하게 사용할 수 있는 내용입니다.  모든 행(:)의 데이터에 대해 country와 continent열을 추출하는 방법입니다. 이때 loc와 iloc속성에 전달하는 열 지정 값은 반드시 형식에 맞게 전달해야 합니다. loc는 열명, iloc는 열 위치를 숫자로 지정해야 합니다.

import pandas as pd

# print("\n-- \n", "")
pandas_DF = pd.read_csv(r'C:\Users\HANA\PycharmProjects\HANATOUR\Pandas\doit_pandas-master\data\gapminder.tsv', sep='\t')
print("\n-- pandas_DF.columns\n", pandas_DF.columns)

subset_loc = pandas_DF.loc[:, ['country','continent']]
print("\n-- subset loc\n", subset_loc)

subset_iloc = pandas_DF.iloc[:, [1,2,-1]]
print("\n-- subset iloc\n", subset_iloc)

subset_iloc_2 = pandas_DF.iloc[:, :3]
print("\n-- subset iloc #2\n", subset_iloc_2)

subset_iloc_3 = pandas_DF.iloc[:, 0:6:2]
print("\n-- subset iloc #3\n", subset_iloc_3)

subset_iloc_4 = pandas_DF.iloc[[0, 99, 999], 0:6:2]
print("\n-- subset iloc #4\n", subset_iloc_4)

 

iloc[:, [1,2,-1]]의 경우, 모든 값 중 1번째, 2번째 그리고 마지막 컬럼을 나타내게 됩니다. 

iloc[:, :3]의 경우, 모든 값 중 0번째부터 ~ 2번째 컬럼을 나타내게 됩니다.

iloc[:, 0:6:2]의 경우, 모든 값 중 0번째, 2번째, 4번째 컬럼을 나타내게 됩니다.

iloc[[0, 99, 999], 0:6:2]의 0, 99, 999번째 열중  0번째, 2번째, 4번째 컬럼을 나타내게 됩니다.

 

-- pandas_DF.columns
 Index(['country', 'continent', 'year', 'lifeExp', 'pop', 'gdpPercap'], dtype='object')

-- subset loc
           country continent
0     Afghanistan      Asia
1     Afghanistan      Asia
2     Afghanistan      Asia
3     Afghanistan      Asia
4     Afghanistan      Asia
...           ...       ...
1699     Zimbabwe    Africa
1700     Zimbabwe    Africa
1701     Zimbabwe    Africa
1702     Zimbabwe    Africa
1703     Zimbabwe    Africa

[1704 rows x 2 columns]

-- subset iloc
      continent  year   gdpPercap
0         Asia  1952  779.445314
1         Asia  1957  820.853030
2         Asia  1962  853.100710
3         Asia  1967  836.197138
4         Asia  1972  739.981106
...        ...   ...         ...
1699    Africa  1987  706.157306
1700    Africa  1992  693.420786
1701    Africa  1997  792.449960
1702    Africa  2002  672.038623
1703    Africa  2007  469.709298

[1704 rows x 3 columns]

-- subset iloc #2
           country continent  year
0     Afghanistan      Asia  1952
1     Afghanistan      Asia  1957
2     Afghanistan      Asia  1962
3     Afghanistan      Asia  1967
4     Afghanistan      Asia  1972
...           ...       ...   ...
1699     Zimbabwe    Africa  1987
1700     Zimbabwe    Africa  1992
1701     Zimbabwe    Africa  1997
1702     Zimbabwe    Africa  2002
1703     Zimbabwe    Africa  2007

[1704 rows x 3 columns]

-- subset iloc #3
           country  year       pop
0     Afghanistan  1952   8425333
1     Afghanistan  1957   9240934
2     Afghanistan  1962  10267083
3     Afghanistan  1967  11537966
4     Afghanistan  1972  13079460
...           ...   ...       ...
1699     Zimbabwe  1987   9216418
1700     Zimbabwe  1992  10704340
1701     Zimbabwe  1997  11404948
1702     Zimbabwe  2002  11926563
1703     Zimbabwe  2007  12311143

[1704 rows x 3 columns]

-- subset iloc #4
          country  year       pop
0    Afghanistan  1952   8425333
99    Bangladesh  1967  62821884
999     Mongolia  1967   1149500
반응형