자습메모/시각화 자습
데이터 전처리 (3) - 데이터 선택
경민212
2024. 12. 19. 14:06
⊙ 데이터 선택
iloc : 정수 기반의 인덱스 사용
loc : 레이블 기반의 인덱스 사용
* .iloc[로우, 컬럼] : 인덱스 번호로 선택하기
# iloc을 사용하여 특정 행과 열 선택
selected_data = df.iloc[1:4, 0:2] # 인덱스 1부터 3까지의 행과 0부터 1까지의 열 선택
print(selected_data)
* .loc[로우, 컬럼] : 이름으로 선택하기
data.loc['행이름', '컬럼명']
# 행 이름과 컬럼명을 통해서도 특정 데이터를 선택할 수 있음
# 1개의 컬럼 전체를 선택할 경우
data.loc[: , '칼럼명']
data['칼럼명']
# 여러개의 컬럼을 선택할 경우에도 리스트를 활용해서 선택할 수 있다.
data[['칼럼명1', '칼럼명2', '칼럼명3']]
# 내가 원하는 순서대로 데이터를 선택할 수 있다.
data[['칼럼명3', '칼럼명2', '칼럼명1']]
# 2개 컬럼명을 선택할 경우
data.loc['행이름', ['컬럼명1', '칼럼명2']]
# 2개 행이름을 선택할 경우
data.loc[['행이름1', '행이름2'], '컬럼명1']
# 리스트 슬라이싱을 활용해서 특정 범위를 지정하여 선택할 수 있다.
data.loc['행이름', '컬럼명1' : ] # '컬럼명1' : ==> 컬럼명1부터 끝까지라는 의미
파이썬의 슬라이싱과 달리 loc에서는 해당하는 인덱스 값도 함께 포함되어 출력되기 때문에 혼동하지 않아야 한다.
* 특정 조건을 만족하는 데이터를 선택할 경우 Boolean Indexing
- 조건을 이용하여 데이터프레임에서 특정 조건을 만족하는 행을 선택하는 방법
- 데이터를 필터링하거나 원하는 조건을 만족하는 행을 추출할 수 있다.
- 주로 불리언 값을 가지는 조건식을 사용하여 데이터프레임을 인덱싱하는 방법
& : and 조건 / 각 조건을 소괄호 형태로 묶어주고 &로 이어 붙여주면 된다.
| : or 조건 / | 기호를 활용해서 조건을 만들 수 있다.
- 조건에 따른 특정 컬럼 필터링
# 'age' 열에서 30세 이상인 경우의 'name' 열만 선택
df.loc[df['age'] >= 30, 'name']
- isin()을 활용한 필터링
시리즈나 데이터프레임의 값들 중에서 특정 값이나 리스트 안에 포함된 값들을 찾아내는 메소드, 원하는 조건에 해당하는 데이터를 빠르게 필터링하거나 선택할 수 있다.
# 'gender' 열에서 'Male' 또는 'Female'인 행 필터링
df[df['gender'].isin(['Male', 'Female'])]
# Series나 DataFrame의 특정 열에서 단일 값이 포함되어 있는지 여부를 확인합니다.
import pandas as pd
data = {'A': [1, 2, 3, 4, 5],
'B': ['apple', 'banana', 'orange', 'grape', 'melon']}
df = pd.DataFrame(data)
# 'B' 열에서 'banana' 값이 있는지 확인
result = df['B'].isin(['banana'])
print(result)
# 여러 값이 포함된 데이터를 찾기 위해 리스트에 여러 값을 넣어 사용합니다.
# 'A' 열에서 2 또는 4 값을 포함하는 행 찾기
result = df['A'].isin([2, 4])
print(result)
# 데이터프레임 전체에서 여러 열에 대해 isin()을 사용할 수 있습니다.
# 데이터프레임 전체에서 여러 조건을 확인하여 필터링
result = df.isin({'A': [1, 3], 'B': ['apple', 'orange']})
print(result)
실습해보기
- 비교 연산자 활용
# 예를들어, data['컬럼명1']이 숫자(int)값인 경우
data['컬럼명1'] < 80
# 80보다 작으면 True
# 80보다 크면 False 을 반환합니다.
condition = data['컬럼명1'] < 80
condition
조건을 통해 True / False 로 반환된 값을 활용해서 True에 해당하는 값만 불러올 수 있다.
- 여러개 조건을 활용해서 값을 불러올 수 있다.
# 조건1 and 조건2 ==>> 조건1,2 둘다 만족해야한다 True
## and 를 &로 대체해서 사용할 수 있음
condition1 = data['컬럼명1'] < 80
condition2 = data['컬럼명2'] >= 50
condition = condition1 & condition2
data[conditon]
# 조건1 or 조건2 ==>> 조건1과 조건2 둘중 하나만 만족하면 True
## or 를 |로 대체해서 사용가능
condition1 = data['컬럼명1'] < 80
condition2 = data['컬럼명2'] >= 50
condition = condition1 | condition2
data[conditon]
# ()로 구분해서 조건을 한번에 입력해도 동일하게 활용할 수 있음
condition = (data['컬럼명1'] < 80) & (data['컬럼명2'] >= 50)
data[conditon]
# 이렇게도 가능
data[(data['컬럼명1'] < 80) & (data['컬럼명2'] >= 50)]
# 조건이 많아서 행이 길어질 경우, 줄바꿈을 통해 구분해주시면 훨씬 가독성 있다.
condition = (data['컬럼명1'] < 80) \
& (data['컬럼명2'] >= 50)\
& (data['컬럼명3'] >= 10)
data[conditon]
* 데이터 추가하기
df = pd.DateFrame()
df['칼럼명'] = data
# df라는 데이터프레임에 '컬럼명'이라는 이름의 컬럼이 추가되고,해당 컬럼에 data라는 값이 추가된다.
# 이때, data값이 1개의 단일 값인 경우에는 전체 df라는 데이터프레임 행에 data 값이 전체 적용됨
# 하나의 값인 경우 => 전체 모두 동일한 값 적용
# (리스트,시리즈)의 형태인 경우 => 각 순서에 맞게 컬럼 값에 적용됨
- 신규 컬럼 추가하기
df = pd.DataFrame()
# 컬럼 추가하기
df['EPL'] = 100
df['MLS'] = 60
df['NBA'] = 70
# 리스트 형태로 컬럼값 추가하기
df['KFC'] = [50, 10, 30]
#Tip. 행 수를 맞춰서 입력해줘야함
# 컬럼을 여러 조건 및 계산식을 통해 산출 값으로도 추가가 가능
df['ABC'] = (df['EPL'] + df['NBA']) * df['MLS'] * 2