데이터분석 과정/데이터 분석

데이터분석 전처리 | 데이터 선택 | iloc와 loc 사용법 | Pandas 컬럼 조건식 | 데이터프레임 컬럼 추가하기 | isin( ) 메소드 활용법

ANNASENA 2024. 2. 3. 17:25
728x90

 

1. iloc와 loc

 

▶ iloc와 loc 차이 간단정리

- iloc는 정수 기반의 인덱스를 사용함

- loc는 레이블 기반의 인덱스를 사용함

 

1-1) iloc

▶ .iloc[행 번호, 열 번호] : 인덱스 번호로 선택하기

: 행 번호와 열 번호를 통해 특정 행과 열의 데이터를 선택할 수 이씀

df.iloc[0, 2]

>> 인덱스 0행과 인덱스 2열의 데이터 값 선택

(파이썬은 0부터 세준다는 점을 주의할 것! 첫 번째 행, 세 번째 열 데이터 값이 추출될 것)

 

▶ .iloc 예시

import pandas as pd

# 샘플 데이터프레임 생성
data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50],
    'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)

# iloc을 사용하여 특정 행과 열 선택
ex_data = df.iloc[1:4, 0:2]
print(ex_data)

>> 이렇게 .iloc[행 번호, 열 번호] 자리에 슬라이싱을 사용해도 됨

>> 인덱스 1부터 3까지의 행과 0부터 1까지의 열 선택


1-2) loc

 loc[행 이름, 열 이름] : 이름으로 선택하기

: 인덱스가 번호가 아니라 특정 문자인 경우

: loc['행 이름'] 자리에 추출하고자 하는 값의 인덱스를 적어주면 됨

: loc['열 이름'] 은 추출하고자 하는 값의 컬럼명을 말함 

data.loc['행 이름' , '열 이름']

 

▶ loc 예시

import pandas as pd

# 샘플 데이터프레임 생성
data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50],
    'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# loc을 사용하여 특정 행과 열 선택
selected_data = df.loc['b':'d', 'A':'B'] 
print(selected_data)

>> loc 역시 .loc[행 이름, 열 이름] 자리에 슬라이싱을 사용해도 됨

>> 레이블 'b'부터 'd'까지의 행과 'A'부터 'B'까지의 열 선택


1-3) 특정 컬럼 전체를 선택하는 방법

▶ 1개의 컬럼에 대한 전체 행 출력

: 리스트와 슬라이싱을 사용해서 데이터 선택

data.loc[: , '컬럼명']
data['컬럼명']

 >> 위 두 코드 중 어느 것을 사용해도 동일한 결과 값이 나옴

 

▶여러 개의 컬럼에 대한 전체 행 출력

: 리스트를 사용해서 데이터 선택

data[['컬럼명1', '컬럼명2', '컬럼명3']]

 

- 컬럼을 선택할 때, 내가 원하는 순서를 지정해줄 수 있음

data[['컬럼명3', '컬럼명1', '컬럼명2']]

1-4) 2개 이상의 특정 행과 열을 선택하는 방법

▶ 한 행에 대한 2개의 컬럼값 출력

data.loc['행이름', ['컬럼명1' , '컬럼명2']]

 

▶ 두 행에 대한 1개 컬럼값 출력

data.loc[['행이름1', '행이름2'] , '컬럼명1']

 

▶ 한 행에 대한 여러 컬럼값 출력

data.loc['행이름' , '컬럼명1' : ]

>> '컬럼명1' : 의 뜻은 컬럼명1부터 컬럼 끝까지 다 출력하라는 의미


2. Boolean Indexing

 

▶ Boolean Indexing

: 불리언(Boolean) 값을 가지는 조건식을 사용해 데이터를 필터링 하거나 조건을 만족하는 행을 추출하는 방법

조건에 따라 각 행이 True 또는 False로 평가되며 이를 바탕으로 조건을 만족하는 행 (=True 값인 행)을 필터링 함

 

▶ Boolean Indexing 활용 방법

: 특정 열의 값을 기준으로 조건을 설정하여 조건을 만족하는 행을 선택함

import pandas as pd

df_ex = pd.DataFrame([['anna',24,'female'],['sena',35,'female'],['happy',17,'male'], ['nana',45,'male']],
                     columns=['name', 'age', 'gender'],
                     index = [1,2,3,4])

df_ex

df_ex

 

① 단일 조건으로 필터링

df_ex[df_ex['age'] >= 30]

df_ex[df_ex['age'] >= 30]

 

② 여러 조건으로 필터링

: and 일 때는 &

: or 일 때는 |   (Enter키 위에 원화 표시(₩)랑 같이 있는 막대기임, shift 누르고 해당 키 누르면 나옴)

: 조건식이 길어져서 줄바꿈을 하고 싶을 때는 한 조건 끝나고 \ (역슬래시, 원화 표시(₩)가 역슬래시 표시임) 붙이면 됨

# 'age' 열에서 30세 이하면서 'gender' 열이 'female'인 행 필터링
df_ex[(df_ex['age'] <= 30) & (df_ex['gender'] == 'female')]

df_ex

 

③ 조건에 따른 특정 컬럼 필터링

: 조건을 만족하는, '특정 열'을 따로 선택할 수도 있음

: 조건에 사용되는 열 따로, 추출할 열 따로

'age' 열에서 30세 이상인 경우의 'name' 열만 선택
df_ex.loc[df_ex['age'] >= 30, 'name']

df_ex

 

④ isin()을 활용한 필터링

: 리스트를 활용해 여러 값들을 포함하는 행을 선택할 수 있음

# 'gender' 열에서 'male' 또는 'female'인 행 필터링
df_ex[df_ex['gender'].isin(['male', 'female'])]

df_ex

 

+ isin() 메소드 활용법

  • 시리즈(Series)나 데이터프레임(DataFrame)의 값들 중에서 특정 값이나 리스트 안에 포함된 값들을 찾아내는 메소드
import pandas as pd

df_ex = {'name' : ['anna', 'sena', 'happy', 'nana'],
         'age' : [24,35,17,45]}

df_ex = pd.DataFrame(df_ex)
df_ex

 

 단일 값 포함 여부 확인

# 'name' 열에서 'nana' 값이 있는지 확인
result = df_ex['name'].isin(['nana'])
print(result)

 

 여러 값 포함 여부 확인

# 'age' 열에서 24 또는 45 값을 포함하는 행 찾기
result = df_ex['age'].isin([24, 45])
print(result)

 

데이터프레임 전체에서의 사용

# 데이터프레임 전체에서 여러 조건을 확인하여 필터링
result = df_ex.isin({'age': [17, 45], 'name': ['happy', 'nana']})
print(result)

>> 해당 열의 값이 리스트 안에 있는 값이면 True를 반환하고, 없으면 False를 반환함


3. 데이터 추가하기

 

▶ 데이터프레임에 컬럼값 추가하는 방법

df_ex = pd.DataFrame()

# 신규 컬럼 추가
df_ex['컬럼명'] = data

# 리스트 형태로 컬럼값 추가하기(행 수를 맞춰서 입력해줘야 함)
df_ex['컬럼명'] = [1,2,3]

# 컬럼을 여러 조건 및 계산식에 대한 산출값으로도 추가 가능
df_ex['total_cost'] = (df['total_bill'] + df['tip'])
  • df_ex라는 데이터프레임 '컬럼명'이라는 이름의 컬럼이 추가되고, 해당 컬럼에 data라는 값이 추가
    이 때, data값이 1개일 경우에는 해당 칼럼의 전체 행에 그 한 개의 값이 적용됨
  • 즉,  data가 하나의 값이면, 전체 모두 동일한 값 적용
    리스트나 시리즈 형태이면,  각 순서에 맞게 컬럼 값이 적용
728x90