[데이터 사이언스/문법] df[df[ ]] 과 df[ ]의 차이가 무엇일까?
2024. 8. 17. 19:48ㆍAI & DS/머신러닝
df['Ticker'] == Ticker는
'Ticker' 열에서 주어진 Ticker와 일치하는 값들을 찾는 boolean 시리즈를 생성합니다.
df[df['Ticker'] == Ticker]는
이 boolean 시리즈를 사용하여 일치하는 행을 필터링한 새로운 데이터프레임을 생성합니다.
이렇게 필터링된 데이터프레임을 사용하여 주어진 Ticker에 해당하는 주식의 인덱스를 찾고,
k-NN 모델을 사용하여 가장 유사한 주식을 추천할 수 있습니다.
df['Ticker'] == Ticker: 비교 연산
- df['Ticker'] == Ticker는 데이터프레임 df의 'Ticker' 열과 주어진 Ticker 값을 비교하는 연산입니다.
- 이 연산의 결과는 동일한 길이의 boolean 시리즈로, 각 요소는 해당 행의 'Ticker' 값이 주어진 Ticker 값과 같은지 여부를 나타냅니다.
- 예를 들어, Ticker가 "AAPL"일 때, 결과는 다음과 같습니다
0 True
1 False
2 False
3 False
4 False
5 False
Name: Ticker, dtype: bool
df[df['Ticker'] == Ticker]:행 선택
- df[df['Ticker'] == Ticker]는 boolean 시리즈 df['Ticker'] == Ticker를 사용하여 데이터프레임 df에서 조건을 만족하는 행을 선택합니다.
- 결과는 조건을 만족하는 행들로 이루어진 데이터프레임입니다.
- 예를 들어, Ticker가 "AAPL"일 때, 결과는 다음과 같습니다:
Ticker industry sector marketCap beta
0 AAPL tech IT 1.200000e12 1.2
원본 데이터
import pandas as pd
df = pd.DataFrame({
'Ticker': ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'FB', 'TSLA'],
'industry': ['tech', 'tech', 'tech', 'tech', 'tech', 'auto'],
'sector': ['IT', 'IT', 'IT', 'IT', 'IT', 'Auto'],
'marketCap': [1.2e12, 1.1e12, 9.5e11, 8.5e11, 7.5e11, 6.0e11],
'beta': [1.2, 1.1, 1.0, 1.3, 1.5, 2.0]
})
df['Ticker'] == Ticker의 결과
Ticker = 'AAPL'
mask = df['Ticker'] == Ticker
print(mask)
- 출력
0 True
1 False
2 False
3 False
4 False
5 False
Name: Ticker, dtype: bool
df[df['Ticker'] == Ticker]의 결과
filtered_df = df[df['Ticker'] == Ticker]
print(filtered_df)
- 출력
Ticker industry sector marketCap beta
0 AAPL tech IT 1.200000e12 1.2
함수 코드 설명
def recommend_stocks(Ticker):
# 주어진 Ticker에 해당하는 주식의 index를 반환
stock_index = df[df['Ticker'] == Ticker].index[0]
# 주어진 stock의 knn 모델에 대한 최근접 이웃 indices를 호출
neighbor_indices = knn.kneighbors(df_preprocessed[stock_index].reshape(1, -1), return_distance=False)
# 최근접 이웃을 호출
neighbor_tickers = df.iloc[neighbor_indices[0]]
# input 주식은 제외하고 추천
recommendations = neighbor_tickers[neighbor_tickers['Ticker'] != Ticker]
return recommendations
print(recommend_stocks("AAPL"))
각 줄 설명
df[df['Ticker'] == Ticker].index[0]
- df['Ticker'] == Ticker는 'Ticker' 열에서 주어진 Ticker와 일치하는 값들을 찾습니다.
- df[df['Ticker'] == Ticker]는 일치하는 행을 필터링하여 새로운 데이터프레임을 만듭니다.
- .index[0]는 필터링된 데이터프레임의 첫 번째 행의 인덱스를 반환합니다.
- 예를 들어, Ticker가 'AAPL'이면 stock_index는 0이 됩니다.
knn.kneighbors(df_preprocessed[stock_index].reshape(1, -1), return_distance=False)
- df_preprocessed[stock_index]는 전처리된 데이터프레임에서 주어진 stock_index에 해당하는 행을 선택합니다.
- .reshape(1, -1)는 1차원 배열을 2차원 배열로 변환하여 k-NN 모델에 입력할 수 있도록 합니다.
- knn.kneighbors는 주어진 샘플에 대해 가장 가까운 이웃의 인덱스를 반환합니다.
- return_distance=False는 이웃 간의 거리 값을 반환하지 않고 인덱스만 반환하도록 설정합니다.
df.iloc[neighbor_indices[0]]
- neighbor_indices[0]는 최근접 이웃의 인덱스 배열을 나타냅니다.
- df.iloc는 위치 기반 인덱싱을 사용하여 주어진 인덱스에 해당하는 행을 선택합니다.
neighbor_tickers[neighbor_tickers['Ticker'] != Ticker]
- neighbor_tickers에서 입력 Ticker와 일치하지 않는 행을 필터링하여 추천 주식 목록을 만듭니다.
'AI & DS > 머신러닝' 카테고리의 다른 글
[머신러닝/개념] Numpy & Pandas 축(axis) 개념 정리 (0) | 2025.02.26 |
---|---|
[머신러닝] 공모전 추천 시스템(1) - 코랩/설치 라이브러리 (0) | 2024.08.29 |
[데이터 사이언스/문법] columnTransformer란? (0) | 2024.08.16 |
[데이터 사이언스/개념/문법] oneHotCoding이란? (0) | 2024.08.16 |
[데이터 사이언스/개념] 표준화의 장점 및 데이터 scale 차이에 따른 영향 (0) | 2024.08.15 |