df[''].nlargest() -> 컬럼중에 가장 큰 값 가져오기, 기본값은 5개지만 괄호 안에 숫자 넣으면 더 가져올 수 있음
for app_name, group in df.groupby("app_name"):
이렇게 하면 그룹별로 for문도 돌릴 수 있음
그리고 데이터프레임에서 컬럼 가져올 때 [] 안해도 됨. df.age 하면 나옴,,, 지금까지 몰랐따
%%time 치면 실행시간이랑 나옴
CPU times: user 19.1 s, sys: 985 ms, total: 20.1 s Wall time: 20.3 s
트렌드 감지
골든크로스 | 단기 평균선이 장기 평균선을 위로 돌파 → 상승 추세 시작 신호 |
데드크로스 | 단기 평균선이 장기 평균선을 아래로 하향 돌파 → 하락 추세 시작 신호 |
%%time
# 60일 이동 평균 계산 (장기선)
ma_long = df_daily_facebook.review_mean.rolling(60).mean()
# 20일 이동 평균 계산 (단기선)
ma_short = df_daily_facebook.review_mean.rolling(20).mean()
# 조건에 따라 trend 배열 생성 (벡터 연산으로 빠르게 처리)
trend = np.where(ma_short == ma_long, 'Neutral', # 같으면 Neutral
np.where(ma_short > ma_long, 'Up', 'Down')) # 크면 Up, 작으면 Down
# 60일 이전엔 평균 계산 불가능 → trend도 None 처리
trend[:60] = None
# 같으면 중립 추세
else:
trend = "Neutral"
# 결과 저장
trends.append(trend)
ma_longs.append(ma_long)
ma_shorts.append(ma_short)
np.where(조건, 조건이 True일 때 값, 조건이 False일 때 값)
df['리뷰'].value_counts(normalize=True) :비율로 나타내줌
멀티 프로세싱
from joblib import Parallel, delayed
df_agg = pd.concat(
Parallel(n_jobs=-1)(
delayed(trend_calculator)(df_target)
for app_name, df_target in df_daily.groupby("app_name")
)
)
n_jobs = -1 : 모든 코어 쓰겠다
'데이터분석 6기 > 본캠프' 카테고리의 다른 글
2025-05-30 최종프로젝트(베스티에르) 데이터 전처리 (0) | 2025.05.30 |
---|---|
2025-05-29 최종 프로젝트 데이터 살펴보기 (0) | 2025.05.29 |
2025-05-27 무신사 크롤링 (1) | 2025.05.27 |
2025-05-27 스파크 특강 ot (1) | 2025.05.27 |
2025-05-26 spark (1) | 2025.05.26 |