728x90
❤️ 배운 것
pandas
- query
- isin
- reset_index
- apply
- groupby
- merge
- pivot table
- datetime
코드 모음
AAPL.query("Volume <= 70000000")
AAPL.query('Open > Close')
AAPL['Volume'].isin([302220800, 260022000])
AAPL.query("Volume in [302220800, 260022000]")
Volume = 117467900
AAPL.query('Volume == @Volume')
AAPL.reset_index(drop=True)
df_kospi['방법1'] = df_kospi['ChagesRatio'].apply(check_changes)
df_kospi['방법2'] = df_kospi['ChagesRatio'].apply(lambda x : '오른주식' if x>0 else '내린주식')
df_kospi['방법3'] = np.where(df_kospi['ChagesRatio'] >0, '오른주식','내린주식')
merge4.isnull().sum()
df_kospi['방법1'].value_counts()
df_krx['Market'].unique()
df_krx[['Market','ChagesRatio']].groupby('Market').mean()
df_krx[['Market','ChagesRatio', 'Stocks']].groupby('Market').agg({'ChagesRatio' : 'max', 'Stocks' : 'min'})
df_krx[['Market','ChagesRatio', 'Stocks']].groupby('Market').agg({'ChagesRatio' : ['max', 'sum'], 'Stocks' : ['min', 'mean']})
merge2 = pd.merge(left = market_price_change, right = purchases_of_equities, on = ['티커', '종목명'], how = 'left')
# 칼럼이름이 서로 다를 때
purchases_of_equities2 = purchases_of_equities.rename(
columns = {"티커" : "이름변경_티커", '종목명' : '이름변경_종목명'})
pd.merge(left = market_price_change, right = purchases_of_equities2,
left_on = ['티커', '종목명'], right_on = ['이름변경_티커', '이름변경_종목명'], how = 'inner')
df[['Date', 'Symbol','Close']].groupby(['Date', 'Symbol']).mean()
pd.pivot_table(data = df, index = ['Date', 'Symbol'], values = 'Close', aggfunc = 'mean')
date1 = datetime(2023, 9, 12)
date3 = '2023-09-12' # '2023/09/12', '20230912'
datetime_date3 = pd.to_datetime(date3)
datetime_date3.strftime('%Y%m')
💕 과제
# 1. df_krx의 Marcap(시가총액)를 활용하여 시가총액 순위를 새로운 칼럼으로 정의 (칼럼명 : Marcap_rank)
# Marcap(시가총액)이 높을수록 낮은순위(1등에 가깝다.)
df_krx["Marcap_rank"] = df_krx["Marcap"].rank(ascending=False)
# 순위데이터(Marcap_rank)를 활용하여 100위 이하는 large-cap, 100~300위는 mid-cap, 이외 순위는 small-cap으로 새로운 칼럼 선언(칼럼명 : Marcap_size)
df_krx['Marcap_size'] = df_krx['Marcap_rank'].apply(lambda x: "large-cap" if x <= 100 else ("mid-cap" if x <= 300 else "small-cap"))
# 3. Marcap_size(large-cap, mid-cap,small-cap) 수익률(ChagesRatio)의 평균을 출력
df_krx[['Marcap_size', 'ChagesRatio']].groupby(by="Marcap_size").mean()
💛 배운점/느낀점
- pandas는 그동안은 검색해서 되는대로 코드를 작성하다보니 성능을 신경쓰지 못했는데, 집계나 pivot 등을 어느정도 머리에 외워두면 논리적이고 속도상 개선할 부분을 생각하며 할 수 있을 것 같다.
- 라인디버깅이 불편하다는 단점이 있지만 lambda나 one liner에 익숙해지고있어서 필요한 부분에 사용하려고 한다.
반응형
'Education > 새싹 TIL' 카테고리의 다른 글
새싹 AI데이터엔지니어 핀테커스 3주차 (목) - visualization (0) | 2023.09.14 |
---|---|
새싹 AI데이터엔지니어 핀테커스 3주차 (수) - pandas(3), matplotlib (0) | 2023.09.14 |
새싹 AI데이터엔지니어 핀테커스 3주차 (월) - pandas(1) (0) | 2023.09.11 |
새싹 AI데이터엔지니어 핀테커스 2주차 (금) - SQL(3) (0) | 2023.09.08 |
새싹 AI데이터엔지니어 핀테커스 2주차 (목) - SQL(1) (0) | 2023.09.07 |