PYTHON LIBRARY/Pandas Library

Python Pandas로 데이터 다루기 : 데이터 액서스 .loc, .iloc 및 기본 인덱싱 방법

신강희 2024. 4. 9. 18:03
728x90

< Accessing Elements in Pandas DataFrames >

import pandas as pd

 

# We create a list of Python dictionaries
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35}, 
          {'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]

 

< 데이터 액서스 : 굉장히 중요함 데이터 분석의 핵심!!!!! >

# 상단에서 생성한 items2 딕셔너리를 데이터프레임으로 변환 

df = pd.DataFrame(data= items2, index= ['store 1', 'store 2'])

df

 

### 가장 중요한것!!! "데이터 프레임" 에서 원하는 데이터를 억세스 하는 방법
### 데이터 억세스 방법은 총 3가지!

1) 컬럼의 데이터를 가져오는 방법 : 변수명 바로 오른쪽에 대괄호 사용! => 그동안 사용했던 '변수명[ ]' 이 형태

 

df['watches']

store 1    35
store 2    10
Name: watches, dtype: int64

ㄴ 해당 결과값과 같은 형태를 '시리즈'라고 칭하는 것이다. 기억할것! (1차원)

 

# 바이크랄 와치 컬럼 두개를 한번에 가져오시오

df[['bikes','watches']]

 

2) 행과 열의 정보로, 원하는 데이터를 가져오는 방법 (1)

##  .loc[ , ] 로 가져오는 방법
##  이 방법은, 사람용인 인덱스와 컬럼으로 데이터를 억세스 하는 방법

 

# 스토어 1의 팬츠 데이터를 가져와라.

 

df.loc[ 'store 1' , 'pants' ]

30

 

# 스토어 2의 bikes 와 watches 데이터를 가져와라.

df.loc[ 'store 2' , ['bikes','watches'] ]

bikes      15.0
watches    20.0
Name: store 2, dtype: float64

 

# 스토어 2에서, pants 부터 glasses 까지 데이터를 가져와라.

df.loc[ 'store 2' , 'pants':'glasses']

pants       5.0
watches    20.0
glasses    50.0
Name: store 2, dtype: float64

 

3) 행과 열의 정보로 데이터를 가져오는 방법(2)

##   .iloc[  ,  ]
##   이 방법은, 컴퓨터가 매기는 인덱스(오프셋 offset)로 데이터를 억세스 하는 방법

 

# 스토어1의 팬츠 데이터를 가져오시오.

 

df.iloc[ 0 , 1 ]

30

 

# 스토어2 의 bikes 와 watches 데이터를 가져와라.

df.iloc[ 1 , [0,2] ]

bikes      15.0
watches    10.0
Name: store 2, dtype: float64

 

# 스토어2에서 팬츠부터 글래시스 까지 데이터를 가져와라.

df.iloc[ 1 , 1:3+1 ]

pants       5.0
watches    10.0
glasses    50.0
Name: store 2, dtype: float64

 

# 스토어2의 데이터를 가져와라. (loc, iloc를 모두 활용)

# 열에는 : 을 써도 되고 안써도됨

df.loc[ 'store 2' ,  ]

bikes      15.0
pants       5.0
watches    10.0
glasses    50.0
Name: store 2, dtype: float64

 

df.iloc[ 1  , : ]

bikes      15.0
pants       5.0
watches    10.0
glasses    50.0
Name: store 2, dtype: float64

 

# watches 데이터를 가져와라 (인덱싱, .loc, .iloc 를 모두 활용)

 

df['watches']

store 1    35
store 2    10
Name: watches, dtype: int64

 

df.loc[ : , 'watches' ]

store 1    35
store 2    10
Name: watches, dtype: int64

 

df.iloc[ :  , 2 ]

store 1    35
store 2    10
Name: watches, dtype: int64

 

< 데이터의 값을 변경 >

# 스토어 2의 watches 데이터를, 20으로 변경하라.

 

df.iloc[ 1 , 2 ] = 20

df

 

# 새로운 품목을 팔기로 했다.
# shirts 라는 컬럼을 만들고, store 1에는 15개, store 2에는 2개를 만들어라.

 

# 컬럼 만드는 방법 (numpy 처럼 append를 따로 사용안해도 된다.)
df['shirts'] = [ 15, 2 ]

df

 

# suits 컬럼을 만들건데,
# pants 컬럼의 값과 shirts 컬럼의 값을 더해서 만들자.

df['suits'] = df['pants'] + df['shirts']

df

< 데이터 삽입 >

# 실무에서 많이 쓰이지는 않지만 종종 새로운 데이터 값을 삽입해야 하는 경우가 생긴다.

# 이떄 사용하는 방법 .concat

 

# 상입할 데이터를 딕셔너리로 생성하고, 데이터 프레임워크로 변환

new_item = [ {'bikes' : 20, 'pants' : 30, 'watches' : 35, 'glasses' : 4} ]

 

new_store_df = pd.DataFrame(data= new_item, index= ['store 3'])

 

# 기존 df 데이터에 .concat을 사용하여 데이터 삽입

df = pd.concat( [df, new_store_df] )

df

ㄴ NaN 은 해당 항목에 값이 없음을 뜻합니다. (Not a Number)

 

다음 게시글에서 계속

반응형