2023-03-03

강혜성·2023년 3월 3일
0

분산처리

목록 보기
6/18

MVP 구현

  • MVP 구현 요구사항은 아래를 펼쳐서 확인 가능
  • Yahoo Finance로 2020-01-01 ~ 2020.12.31 까지 1년 데이터를 한달 기준으로 가져오는 일을 수행 (코로나 기간)
  • 국내 주식 10건, 해외 주식 10건에 대해서 데이터를 가져옴
# BACK

1. 국내주식, 해외주식 종목 데이터 고르기
    - 국내 주식 10개
        1. SK바이오팜: 현재 코로나19 치료제인 '카바페노스' 개발에 주력하고 있습니다.
        2. 셀트리온: 코로나19 치료제 후보군 중 하나인 '셀트로나' 개발에 주력하고 있습니다.
        3. 삼성바이오로직스: 코로나19 백신 개발에 참여하고 있으며, 전 세계적으로 수요가 높은 생물학적 제제를 생산하고 있습니다.
        4. 한화솔루션: 마스크 필터용 기술력을 보유하고 있으며, 수소 경제 관련 사업을 추진하고 있습니다.
        5. 삼성SDI: 전기차 배터리 제조사로서, 전기차 산업이 급부상하고 있는 지금 대표적인 기업입니다.
        6. LG화학: 배터리 및 반도체, 디스플레이 등 전반적인 전자제품 산업에 필수적인 화학제품을 공급하고 있습니다.
        7. SK이노베이션: 배터리 제조사로서, 전기차 산업에 대한 수요 증가로 인해 성장 가능성이 높습니다.
        8. 두산솔루스: LED 조명 및 디스플레이 제조사로서, 코로나19로 인해 원격 교육 및 업무 등이 확대되면서 수요가 높아졌습니다.
        9. 네이버: 코로나19로 인해 인터넷 이용이 증가하면서 검색, 쇼핑, 엔터테인먼트 등 다양한 분야에서 성장하고 있습니다.
        10. 카카오: 모바일 메신저와 인터넷 서비스로 다양한 분야에서 성장하고 있으며, 코로나19 상황에서도 온라인 비즈니스
    - 해외 주식 10개
        1. Moderna Inc. (MRNA): 코로나19 백신을 개발하고 있는 미국 제약회사입니다.
        2. Pfizer Inc. (PFE): 코로나19 백신을 개발하고 있는 미국 제약회사입니다.
        3. Johnson & Johnson (JNJ): 코로나19 백신을 개발하고 있는 미국 제약회사입니다.
        4. Zoom Video Communications Inc. (ZM): 코로나19로 인해 원격 회의 및 교육 등이 증가하면서 성장한 비디오 커뮤니케이션 회사입니다.
        5. Amazon.com Inc. (AMZN): 코로나19로 인해 온라인 쇼핑 수요가 증가하면서 매출이 크게 증가하고 있는 회사입니다.
        6. Shopify Inc. (SHOP): 코로나19로 인해 온라인 쇼핑 수요가 증가하면서 인기 있는 쇼핑 카트 소프트웨어 제공 회사입니다.
        7. Netflix Inc. (NFLX): 코로나19로 인해 인터넷 TV 시청 수요가 증가하면서 성장한 회사입니다.
        8. DocuSign Inc. (DOCU): 코로나19로 인해 디지털 문서 서명 수요가 증가하면서 인기 있는 회사입니다.
        9. Tesla Inc. (TSLA): 코로나19 상황에서도 전기차 시장의 성장 가능성이 높아져, 인기 있는 기업 중 하나입니다.
        10. Nvidia Corporation (NVDA): 코로나19 상황에서도 인공지능 및 게임 그래픽 카드 수요가 계속해서 증가하면서 인기 있는 기업 중 하나입니다.
    
2. 코로나시기 2020.01~2020.12 한달단위 데이터 (12턴) 넘겨주기
3. 뉴스 데이터 넘겨주기
4. 사용자 4명 더미데이터 넘겨주기

## 벡엔드 필요기능

- 주식 데이터를 크롤링해서 가져올수 있어야한다
- 주식 데이터를 프론트에 제공해야 한다.
- 데이터를 차트에 맞게 제공해야한다.

# FRONT

1. 페이지 UI
2. 종목을 누르면 해당 종목의 주가그래프가 나옴
3. 카드 누르면 진짜 보시겠습니까? alert
4. 카드 뒤집으면 해당 날짜의 뉴스 나옴
5. 카드 뒤집으면 내일꺼 오르는지 안오르는지 나옴
6. 사용자 4명 프로필이 나옴

Yahoo Finance

국내 주식 코드 찾기

  • 한국어로 검색하면 제대로 된 Code가 나오지 않음
  • 구글에 "[종목 명] 야후 파이낸스"로 검색해서 코드 확인

국내 주식 데이터 불러오기

  • 파이썬 노트북 환경
import pandas as pd
import numpy as np
import yfinance as yf
import datetime
# SK 바이오 팜 : 302440.KS          => 데이터 존재 x
# 셀트리온 : 091990.KQ              => 데이터 존재 x
# 삼성바이오로직스 : 207940.KS
# 한화솔루션 : 009830.KS
# 삼성 SDI : 006400.KS
# LG 화학 : 051910.KS
# SK 이노베이션 : 096775.KS
# 두산솔루스 : 33637L.KS
# 네이버 : 035420.KS
# 카카오 : 035720.KS

korea_company_list = ["302440.KS", "207940.KS", "009830.KS", "006400.KS", "051910.KS", "096775.KS", "33637L.KS", "035420.KS", "035720.KS"]
end = "2020-12-31"
start = "2020-01-01"
interval = "1mo"
korea_origin_data = yf.download(korea_company_list, start=start, end=end, interval = interval)
korea_origin_data
[*********************100%***********************]  10 of 10 completed

2 Failed downloads:
- 302440.KS: Data doesn't exist for startDate = 1577804400, endDate = 1609340400
- 091990.KQ: Period 'max' is invalid, must be one of ['1d', '5d']
Adj Close	...	Volume
006400.KS	009830.KS	035420.KS	035720.KS	051910.KS	091990.KQ	096775.KS	207940.KS	302440.KS	33637L.KS	...	006400.KS	009830.KS	035420.KS	035720.KS	051910.KS	091990.KQ	096775.KS	207940.KS	302440.KS	33637L.KS
Date																					
2020-01-01 00:00:00	274629.000000	16850.000000	178188.984375	31970.916016	321816.90625	NaN	92620.335938	484500.0	NaN	21134.214844	...	8081124	15460647	8845190	44811909	6191588	NaN	182257	2797715	NaN	2763992
2020-02-01 00:00:00	293534.625000	17392.203125	172729.140625	34584.886719	350899.62500	NaN	72337.781250	463500.0	NaN	20642.720703	...	12487211	23409013	10704873	66339665	10551353	NaN	253723	3468975	NaN	1558807
2020-03-01 00:00:00	239305.328125	13056.331055	168758.343750	31267.152344	290827.12500	NaN	62246.460938	482000.0	NaN	17448.013672	...	20793829	33258938	16165273	114366593	14821478	NaN	359065	7142278	NaN	913140
2020-04-01 00:00:00	284579.312500	14176.836914	196057.500000	36997.789062	359004.65625	NaN	72038.039062	581000.0	NaN	27130.433594	...	16283734	23294449	14952320	82376673	10337323	NaN	295842	11251612	NaN	4367643
2020-05-01 00:00:00	357216.718750	15654.943359	224349.343750	52983.246094	372354.09375	NaN	79331.765625	622000.0	NaN	41924.382812	...	14652159	46925062	21720941	163833168	11089158	NaN	251773	4396928	NaN	3487545
2020-06-01 00:00:00	361694.375000	18659.917969	265049.906250	53787.546875	467707.28125	NaN	92620.335938	775000.0	NaN	33569.000000	...	15644002	61640015	26395703	137698767	15173513	NaN	1283874	7117256	NaN	2619277
2020-07-01 00:00:00	395525.468750	24718.332031	298801.531250	69069.234375	541605.93750	NaN	89722.828125	733000.0	NaN	37058.601562	...	11234188	89341645	28482049	153811734	10339294	NaN	554717	4428613	NaN	1115892
2020-08-01 00:00:00	450252.250000	38725.386719	320144.531250	81837.492188	705613.37500	NaN	120896.015625	778000.0	NaN	31750.470703	...	15288926	93174462	21055145	139531935	18722042	NaN	5268796	5099328	NaN	476510
2020-09-01 00:00:00	431346.625000	37271.367188	294334.437500	73291.820312	623609.68750	NaN	120396.445312	690000.0	NaN	34896.027344	...	8024976	188225792	17195161	82765280	18533683	NaN	1037170	2383742	NaN	1711131
2020-10-01 00:00:00	439804.375000	42360.437500	287881.906250	66354.734375	582607.81250	NaN	106408.476562	682000.0	NaN	31160.677734	...	6046931	112608316	13770718	50033321	8768134	NaN	216361	2187767	NaN	266329
2020-11-01 00:00:00	530352.312500	46286.289062	275473.187500	73995.578125	762825.31250	NaN	134883.984375	786000.0	NaN	36616.253906	...	12128551	143979568	18816447	66344794	11489532	NaN	889997	3559210	NaN	643605
2020-12-01 00:00:00	624880.500000	46431.691406	290363.625000	78318.687500	785710.06250	NaN	136882.265625	826000.0	NaN	31013.232422	...	7769057	74315883	13469782	67271794	8148365	NaN	457992	3553906	NaN	610314
12 rows × 60 columns
  • SK 바이오 팜, 셀트리온 데이터가 없음
  • 2개를 제외한 8개로 다시 수행
korea_company_list = ["207940.KS", "009830.KS", "006400.KS", "051910.KS", "096775.KS", "33637L.KS", "035420.KS", "035720.KS"]
korea_origin_data = yf.download(korea_company_list, start=start, end=end, interval = interval)
korea_origin_data
[*********************100%***********************]  8 of 8 completed
Adj Close	Close	...	Open	Volume
006400.KS	009830.KS	035420.KS	035720.KS	051910.KS	096775.KS	207940.KS	33637L.KS	006400.KS	009830.KS	...	207940.KS	33637L.KS	006400.KS	009830.KS	035420.KS	035720.KS	051910.KS	096775.KS	207940.KS	33637L.KS
Date																					
2020-01-01	274629.00000	16850.000000	178188.984375	31970.914062	321816.93750	92620.335938	484500.0	21134.214844	276000.0	16850.000000	...	433000.0	25200.0	8081124	15460647	8845190	44811909	6191588	182257	2797715	2763992
2020-02-01	293534.62500	17392.203125	172729.140625	34584.882812	350899.62500	72337.781250	463500.0	20642.720703	295000.0	17392.203125	...	477000.0	20500.0	12487211	23409013	10704873	66339665	10551353	253723	3468975	1558807
2020-03-01	239305.34375	13056.331055	168758.359375	31267.152344	290827.12500	62246.460938	482000.0	17448.013672	240500.0	13056.331055	...	463000.0	21000.0	20793829	33258938	16165273	114366593	14821478	359065	7142278	913140
2020-04-01	284579.34375	14176.836914	196057.500000	36997.789062	359004.65625	72038.039062	581000.0	27130.433594	286000.0	14176.836914	...	481000.0	17450.0	16283734	23294449	14952320	82376673	10337323	295842	11251612	4367643
2020-05-01	357216.71875	15654.943359	224349.343750	52983.246094	372354.09375	79331.765625	622000.0	41924.382812	359000.0	15654.943359	...	581000.0	27600.0	14652159	46925062	21720941	163833168	11089158	251773	4396928	3487545
2020-06-01	361694.34375	18659.917969	265049.875000	53787.542969	467707.25000	92620.335938	775000.0	33569.000000	363500.0	18659.917969	...	629000.0	43400.0	15644002	61640015	26395703	137698767	15173513	1283874	7117256	2619277
2020-07-01	395525.46875	24718.332031	298801.562500	69069.226562	541606.00000	89722.828125	733000.0	37058.601562	397500.0	24718.332031	...	775000.0	33950.0	11234188	89341645	28482049	153811734	10339294	554717	4428613	1115892
2020-08-01	450252.25000	38725.386719	320144.531250	81837.500000	705613.37500	120896.015625	778000.0	31750.470703	452500.0	38725.386719	...	728000.0	37400.0	15288926	93174462	21055145	139531935	18722042	5268796	5099328	476510
2020-09-01	431346.65625	37271.367188	294334.437500	73291.812500	623609.68750	120396.445312	690000.0	34896.027344	433500.0	37271.367188	...	775000.0	32300.0	8024976	188225792	17195161	82765280	18533683	1037170	2383742	1711131
2020-10-01	439804.43750	42360.437500	287881.906250	66354.726562	582607.75000	106408.476562	682000.0	31160.677734	442000.0	42360.437500	...	690000.0	35500.0	6046931	112608316	13770718	50033321	8768134	216361	2187767	266329
2020-11-01	530352.37500	46286.289062	275473.187500	73995.578125	762825.25000	134883.984375	786000.0	36616.253906	533000.0	46286.289062	...	691000.0	33800.0	12128551	143979568	18816447	66344794	11489532	889997	3559210	643605
2020-12-01	624880.50000	46431.691406	290363.625000	78318.687500	785710.06250	136882.265625	826000.0	31013.232422	628000.0	46431.691406	...	794000.0	37050.0	7769057	74315883	13469782	67271794	8148365	457992	3553906	610314
12 rows × 48 columns

해외 데이터 수집

  • 해외 주식 코드가 있어서 코드 수집 필요 없음
  • 동일한 방법으로 수집
# 1. Moderna Inc. (MRNA): 코로나19 백신을 개발하고 있는 미국 제약회사입니다.
# 2. Pfizer Inc. (PFE): 코로나19 백신을 개발하고 있는 미국 제약회사입니다.
# 3. Johnson & Johnson (JNJ): 코로나19 백신을 개발하고 있는 미국 제약회사입니다.
# 4. Zoom Video Communications Inc. (ZM): 코로나19로 인해 원격 회의 및 교육 등이 증가하면서 성장한 비디오 커뮤니케이션 회사입니다.
# 5. Amazon.com Inc. (AMZN): 코로나19로 인해 온라인 쇼핑 수요가 증가하면서 매출이 크게 증가하고 있는 회사입니다.
# 6. Shopify Inc. (SHOP): 코로나19로 인해 온라인 쇼핑 수요가 증가하면서 인기 있는 쇼핑 카트 소프트웨어 제공 회사입니다.
# 7. Netflix Inc. (NFLX): 코로나19로 인해 인터넷 TV 시청 수요가 증가하면서 성장한 회사입니다.
# 8. DocuSign Inc. (DOCU): 코로나19로 인해 디지털 문서 서명 수요가 증가하면서 인기 있는 회사입니다.
# 9. Tesla Inc. (TSLA): 코로나19 상황에서도 전기차 시장의 성장 가능성이 높아져, 인기 있는 기업 중 하나입니다.
# 10. Nvidia Corporation (NVDA): 코로나19 상황에서도 인공지능 및 게임 그래픽 카드 수요가 계속해서 증가하면서 인기 있는 기업 중 하나입니다.


overseas_company_list = ["MRNA", "PFE", "JNJ", "ZM", "AMZN", "SHOP", "NFLX", "DOCU", "TSLA", "NVDA"]
overseas_origin_data = yf.download(overseas_company_list, start=start, end=end, interval = interval)
overseas_origin_data
[*********************100%***********************]  10 of 10 completed
Adj Close	...	Volume
AMZN	DOCU	JNJ	MRNA	NFLX	NVDA	PFE	SHOP	TSLA	ZM	...	AMZN	DOCU	JNJ	MRNA	NFLX	NVDA	PFE	SHOP	TSLA	ZM
Date																					
2020-01-01	100.435997	78.510002	136.764420	20.510000	345.089996	58.903553	31.351860	46.566002	43.371334	76.300003	...	1693966000	41361500	150462900	73539900	169874000	612541200	531835964	376433000	6108277500	47782500
2020-02-01	94.187500	86.309998	123.544571	25.930000	369.029999	67.284538	28.423260	46.331001	44.532665	105.000000	...	1850202000	34275400	147288300	323753900	114056000	1184865200	586886279	547234000	7088802000	143712000
2020-03-01	97.486000	92.400002	121.235176	29.950001	375.500000	65.711906	27.759882	41.693001	34.933334	146.119995	...	3276182000	88709000	355927400	397926200	201979100	1577395200	1019616939	702948000	6314025000	335926000
2020-04-01	123.699997	104.750000	138.718216	45.990002	419.850006	72.861435	32.624668	63.229000	52.125332	135.169998	...	2492196000	70328100	234380900	310717800	225111600	1127830400	533383339	870616000	5722162500	371457600
2020-05-01	122.118500	139.740005	137.525620	61.500000	419.730011	88.501663	32.480083	75.779999	55.666668	179.479996	...	1651688000	73063500	136206100	650301000	135055800	1254887600	474627691	831037000	4090554000	168661500
2020-06-01	137.940994	172.210007	130.919617	64.209999	455.040009	94.706398	28.088070	94.919998	71.987335	253.539993	...	1756366000	136450500	174066600	346314400	117279900	971946400	811003042	554784000	3836590500	312304200
2020-07-01	158.233994	216.830002	135.695389	74.099998	488.880005	105.892822	33.052876	102.400002	95.384003	253.910004	...	2550040000	115534400	137880400	734188500	232206300	809445200	824072643	670953000	5679502500	133741400
2020-08-01	172.548004	223.000000	142.817154	64.889999	529.559998	133.424088	32.777447	106.641998	166.106674	325.100006	...	1670332000	69337200	109956200	291350000	116261900	967254400	470078941	348649000	4672135200	136638900
2020-09-01	157.436493	215.240005	139.522446	70.750000	500.029999	134.980362	31.832026	102.296997	143.003326	470.109985	...	2317986000	208479300	138799800	205003700	118796900	1585655200	510247724	488876000	5208854400	339866800
2020-10-01	151.807495	202.250000	128.492218	67.470001	475.739990	125.076683	30.773853	92.542999	129.346664	460.910004	...	2324522000	78849400	137284700	139744400	154302400	802235600	555231707	311212000	2500999200	200150700
2020-11-01	158.401993	227.880005	135.586411	152.740005	490.700012	133.733475	35.022816	109.038002	189.199997	478.359985	...	1816210000	71956600	153635100	431438200	91788900	759482000	1091575597	316236000	2347796400	213277300
2020-12-01	162.846497	222.300003	148.513077	104.470001	540.729980	130.275742	33.997593	113.195000	235.223328	337.320007	...	1551124000	94463700	158925000	756621500	77564100	512099600	1161346900	309581000	3589038000	150340600
12 rows × 60 columns
  • 데이터 모두 정상적으로 받아지는 것을 확인할 수 있음

데이터 가공

  • 받아온 데이터는 회사를 기준으로 되어있지 않아 개별 처리가 불편함
  • 데이터를 가공해 회사를 기준으로 조회할 수 있게 변경
# Multi index DataFrame slicing
data_columns = set(list(map(lambda x: ' '.join(x[:1]), korea_origin_data.columns)))
print(data_columns)

# 각 회사 코드를 key로 DataFrame을 value로 하는 dict 생성
korea_company_datas = dict()
for company in korea_company_list:
    tmp_df = pd.DataFrame()
    for column in data_columns:
        tmp_df[column] = korea_origin_data[column, company]
    korea_company_datas[company] = tmp_df

korea_company_datas
{'Volume', 'Adj Close', 'High', 'Open', 'Low', 'Close'}
Output exceeds the size limit. Open the full output data in a text editor
{'207940.KS':               Volume  Adj Close      High      Open       Low     Close
 Date                                                                   
 2020-01-01   2797715   484500.0  500000.0  433000.0  401000.0  484500.0
 2020-02-01   3468975   463500.0  542000.0  477000.0  455500.0  463500.0
 2020-03-01   7142278   482000.0  514000.0  463000.0  352000.0  482000.0
 2020-04-01  11251612   581000.0  608000.0  481000.0  449000.0  581000.0
 2020-05-01   4396928   622000.0  645000.0  581000.0  555000.0  622000.0
 2020-06-01   7117256   775000.0  863000.0  629000.0  617000.0  775000.0
 2020-07-01   4428613   733000.0  797000.0  775000.0  716000.0  733000.0
 2020-08-01   5099328   778000.0  854000.0  728000.0  717000.0  778000.0
 2020-09-01   2383742   690000.0  802000.0  775000.0  665000.0  690000.0
 2020-10-01   2187767   682000.0  728000.0  690000.0  624000.0  682000.0
 2020-11-01   3559210   786000.0  833000.0  691000.0  682000.0  786000.0
 2020-12-01   3553906   826000.0  880000.0  794000.0  777000.0  826000.0,
 '009830.KS':                Volume     Adj Close          High          Open           Low  \
 Date                                                                            
 2020-01-01   15460647  16850.000000  20250.000000  18850.000000  16850.000000   
 2020-02-01   23409013  17392.203125  20461.414062  16450.000000  16150.000000   
 2020-03-01   33258938  13056.331055  18512.708984  17635.791016   9129.688477   
 2020-04-01   23294449  14176.836914  14566.578125  12958.895508  12081.978516   
 2020-05-01   46925062  15654.943359  17157.429688  14176.836914  13328.512695   
 2020-06-01   61640015  18659.917969  19871.599609  16285.018555  16091.149414   
 2020-07-01   89341645  24718.332031  27093.230469  18805.320312  17932.908203   
 2020-08-01   93174462  38725.386719  39888.601562  24718.332031  24233.658203   
 2020-09-01  188225792  37271.367188  50696.816406  39016.191406  33587.851562   
...
 2020-08-01  81998.585938  
 2020-09-01  73436.085938  
 2020-10-01  66485.343750  
 2020-11-01  74141.234375  
 2020-12-01  78472.851562  }
  • 제대로 처리되었는지 확인
korea_company_datas["035720.KS"]
	Volume	Adj Close	High	Open	Low	Close
Date						
2020-01-01	44811909	31970.914062	34753.703125	30925.757812	30220.611328	32033.847656
2020-02-01	66339665	34584.882812	38581.644531	31429.435547	31429.435547	34652.964844
2020-03-01	114366593	31267.152344	36869.144531	35156.644531	25687.519531	31328.699219
2020-04-01	82376673	36997.789062	37977.234375	31429.435547	30019.140625	37070.617188
2020-05-01	163833168	52983.246094	56311.070312	37070.617188	36264.734375	53087.539062
2020-06-01	137698767	53787.542969	58225.042969	53087.539062	49763.273438	53893.421875
2020-07-01	153811734	69069.226562	74141.234375	54699.304688	53893.421875	69205.195312
2020-08-01	139531935	81837.500000	84718.445312	70011.078125	68802.257812	81998.585938
2020-09-01	82765280	73291.812500	83811.828125	83308.148438	69809.609375	73436.085938
2020-10-01	50033321	66354.726562	77969.171875	73436.085938	65377.253906	66485.343750
2020-11-01	66344794	73995.578125	76659.617188	66586.078125	66082.398438	74141.234375
2020-12-01	67271794	78318.687500	79580.937500	74443.437500	73637.554688	78472.851562
  • 해외 데이터에서도 동일하게 처리
# Multi index DataFrame slicing
data_columns = set(list(map(lambda x: ' '.join(x[:1]), overseas_origin_data.columns)))
print(data_columns)

# 각 회사 코드를 key로 DataFrame을 value로 하는 dict 생성
overseas_company_datas = dict()
for company in overseas_company_list:
    tmp_df = pd.DataFrame()
    for column in data_columns:
        tmp_df[column] = overseas_origin_data[column, company]
    overseas_company_datas[company] = tmp_df

overseas_company_datas
  • 데이터 확인
overseas_company_datas["MRNA"]
	Volume	Adj Close	High	Open	Low	Close
Date						
2020-01-01	73539900	20.510000	23.500000	19.570000	17.680000	20.510000
2020-02-01	323753900	25.930000	36.000000	20.660000	17.910000	25.930000
2020-03-01	397926200	29.950001	34.980000	27.000000	19.309999	29.950001
2020-04-01	310717800	45.990002	56.380001	30.049999	29.440001	45.990002
2020-05-01	650301000	61.500000	87.000000	48.709999	46.130001	61.500000
2020-06-01	346314400	64.209999	67.000000	62.759998	55.355000	64.209999
2020-07-01	734188500	74.099998	95.209999	63.000000	55.810001	74.099998
2020-08-01	291350000	64.889999	78.620003	74.980003	62.540001	64.889999
2020-09-01	205003700	70.750000	75.389999	63.540001	54.209999	70.750000
2020-10-01	139744400	67.470001	81.370003	69.570000	65.489998	67.470001
2020-11-01	431438200	152.740005	153.869995	68.019997	66.550003	152.740005
2020-12-01	756621500	104.470001	178.500000	177.660004	102.660004	104.470001

데이터 묶기

  • korea_company_datas는 dict이고 key는 String, Value는 DataFrame
  • 하나의 DataFrame으로 묶어서 저장할 필요가 있음
  • 하나의 DataFrame으로 묶고 분별하기 위해서 Date, Company Code를 추가함
df = pd.DataFrame()
for company in korea_company_list:
    korea_company_datas[company]["Date"] = korea_company_datas[company].index
    korea_company_datas[company]["Code"] = company
    df = pd.concat([df, korea_company_datas[company]], join='outer')
df.reset_index(drop=True, inplace=True)
df
``` python
Volume	Adj Close	High	Open	Low	Close	Date	Code
0	2797715	484500.00000	500000.00000	433000.00000	401000.00000	484500.00000	2020-01-01	207940.KS
1	3468975	463500.00000	542000.00000	477000.00000	455500.00000	463500.00000	2020-02-01	207940.KS
2	7142278	482000.00000	514000.00000	463000.00000	352000.00000	482000.00000	2020-03-01	207940.KS
3	11251612	581000.00000	608000.00000	481000.00000	449000.00000	581000.00000	2020-04-01	207940.KS
4	4396928	622000.00000	645000.00000	581000.00000	555000.00000	622000.00000	2020-05-01	207940.KS
5	7117256	775000.00000	863000.00000	629000.00000	617000.00000	775000.00000	2020-06-01	207940.KS
6	4428613	733000.00000	797000.00000	775000.00000	716000.00000	733000.00000	2020-07-01	207940.KS
7	5099328	778000.00000	854000.00000	728000.00000	717000.00000	778000.00000	2020-08-01	207940.KS
8	2383742	690000.00000	802000.00000	775000.00000	665000.00000	690000.00000	2020-09-01	207940.KS
9	2187767	682000.00000	728000.00000	690000.00000	624000.00000	682000.00000	2020-10-01	207940.KS
10	3559210	786000.00000	833000.00000	691000.00000	682000.00000	786000.00000	2020-11-01	207940.KS
11	3553906	826000.00000	880000.00000	794000.00000	777000.00000	826000.00000	2020-12-01	207940.KS
12	15460647	16850.00000	20250.00000	18850.00000	16850.00000	16850.00000	2020-01-01	009830.KS
13	23409013	17392.20312	20461.41406	16450.00000	16150.00000	17392.20312	2020-02-01	009830.KS
14	33258938	13056.33105	18512.70898	17635.79102	9129.68848	13056.33105	2020-03-01	009830.KS
15	23294449	14176.83691	14566.57812	12958.89551	12081.97852	14176.83691	2020-04-01	009830.KS
16	46925062	15654.94336	17157.42969	14176.83691	13328.51270	15654.94336	2020-05-01	009830.KS
17	61640015	18659.91797	19871.59961	16285.01855	16091.14941	18659.91797	2020-06-01	009830.KS
18	89341645	24718.33203	27093.23047	18805.32031	17932.90820	24718.33203	2020-07-01	009830.KS
19	93174462	38725.38672	39888.60156	24718.33203	24233.65820	38725.38672	2020-08-01	009830.KS
20	188225792	37271.36719	50696.81641	39016.19141	33587.85156	37271.36719	2020-09-01	009830.KS
21	112608316	42360.43750	48951.99219	37271.36719	37271.36719	42360.43750	2020-10-01	009830.KS
22	143979568	46286.28906	52344.70312	42990.51172	40034.00391	46286.28906	2020-11-01	009830.KS
23	74315883	46431.69141	47207.16797	44977.67188	42554.30469	46431.69141	2020-12-01	009830.KS
24	8081124	274629.00000	296500.00000	236000.00000	226000.00000	276000.00000	2020-01-01	006400.KS
25	12487211	293534.62500	351000.00000	271500.00000	268000.00000	295000.00000	2020-02-01	006400.KS
26	20793829	239305.34375	324500.00000	296500.00000	180000.00000	240500.00000	2020-03-01	006400.KS
27	16283734	284579.34375	305000.00000	240000.00000	222000.00000	286000.00000	2020-04-01	006400.KS
28	14652159	357216.71875	393500.00000	286000.00000	275500.00000	359000.00000	2020-05-01	006400.KS
29	15644002	361694.34375	399000.00000	361000.00000	348500.00000	363500.00000	2020-06-01	006400.KS
30	11234188	395525.46875	403500.00000	370000.00000	364000.00000	397500.00000	2020-07-01	006400.KS
31	15288926	450252.25000	509000.00000	398000.00000	394000.00000	452500.00000	2020-08-01	006400.KS
32	8024976	431346.65625	463000.00000	453000.00000	406000.00000	433500.00000	2020-09-01	006400.KS
33	6046931	439804.43750	454000.00000	433500.00000	406500.00000	442000.00000	2020-10-01	006400.KS
34	12128551	530352.37500	563000.00000	447500.00000	427000.00000	533000.00000	2020-11-01	006400.KS
35	7769057	624880.50000	630000.00000	543000.00000	535000.00000	628000.00000	2020-12-01	006400.KS
36	6191588	321816.93750	359000.00000	317500.00000	301500.00000	337500.00000	2020-01-01	051910.KS
37	10551353	350899.62500	422500.00000	328500.00000	325500.00000	368000.00000	2020-02-01	051910.KS
38	14821478	290827.12500	412000.00000	368500.00000	230000.00000	305000.00000	2020-03-01	051910.KS
39	10337323	359004.65625	376500.00000	305000.00000	280000.00000	376500.00000	2020-04-01	051910.KS
40	11089158	372354.09375	416000.00000	376500.00000	330000.00000	390500.00000	2020-05-01	051910.KS
41	15173513	467707.25000	520000.00000	391000.00000	389500.00000	490500.00000	2020-06-01	051910.KS
42	10339294	541606.00000	580000.00000	499000.00000	487500.00000	568000.00000	2020-07-01	051910.KS
43	18722042	705613.37500	785000.00000	578000.00000	577000.00000	740000.00000	2020-08-01	051910.KS
44	18533683	623609.68750	774000.00000	741000.00000	604000.00000	654000.00000	2020-09-01	051910.KS
45	8768134	582607.75000	698000.00000	654000.00000	605000.00000	611000.00000	2020-10-01	051910.KS
46	11489532	762825.25000	833000.00000	609000.00000	588000.00000	800000.00000	2020-11-01	051910.KS
47	8148365	785710.06250	863000.00000	808000.00000	777000.00000	824000.00000	2020-12-01	051910.KS
48	182257	92620.33594	112500.00000	112000.00000	91100.00000	92700.00000	2020-01-01	096775.KS
49	253723	72337.78125	97400.00000	92000.00000	71100.00000	72400.00000	2020-02-01	096775.KS
50	359065	62246.46094	74500.00000	71200.00000	42100.00000	62300.00000	2020-03-01	096775.KS
51	295842	72038.03906	73900.00000	62000.00000	60100.00000	72100.00000	2020-04-01	096775.KS
52	251773	79331.76562	83300.00000	72100.00000	69000.00000	79400.00000	2020-05-01	096775.KS
53	1283874	92620.33594	107500.00000	80200.00000	80200.00000	92700.00000	2020-06-01	096775.KS
54	554717	89722.82812	96900.00000	93800.00000	87600.00000	89800.00000	2020-07-01	096775.KS
55	5268796	120896.01562	213500.00000	89800.00000	89800.00000	121000.00000	2020-08-01	096775.KS
56	1037170	120396.44531	144500.00000	121000.00000	115000.00000	120500.00000	2020-09-01	096775.KS
57	216361	106408.47656	127000.00000	120500.00000	106000.00000	106500.00000	2020-10-01	096775.KS
58	889997	134883.98438	142000.00000	103500.00000	101500.00000	135000.00000	2020-11-01	096775.KS
59	457992	136882.26562	140000.00000	136500.00000	130500.00000	137000.00000	2020-12-01	096775.KS
60	2763992	21134.21484	28250.00000	25200.00000	20700.00000	21500.00000	2020-01-01	33637L.KS
61	1558807	20642.72070	27400.00000	20500.00000	19950.00000	21000.00000	2020-02-01	33637L.KS
62	913140	17448.01367	23300.00000	21000.00000	9710.00000	17750.00000	2020-03-01	33637L.KS
63	4367643	27130.43359	32650.00000	17450.00000	16600.00000	27600.00000	2020-04-01	33637L.KS
64	3487545	41924.38281	47650.00000	27600.00000	25550.00000	42650.00000	2020-05-01	33637L.KS
65	2619277	33569.00000	73100.00000	43400.00000	33800.00000	34150.00000	2020-06-01	33637L.KS
66	1115892	37058.60156	43350.00000	33950.00000	33000.00000	37700.00000	2020-07-01	33637L.KS
67	476510	31750.47070	41850.00000	37400.00000	30600.00000	32300.00000	2020-08-01	33637L.KS
68	1711131	34896.02734	52800.00000	32300.00000	31000.00000	35500.00000	2020-09-01	33637L.KS
69	266329	31160.67773	42000.00000	35500.00000	30700.00000	31700.00000	2020-10-01	33637L.KS
70	643605	36616.25391	45750.00000	33800.00000	31650.00000	37250.00000	2020-11-01	33637L.KS
71	610314	31013.23242	42000.00000	37050.00000	30700.00000	31550.00000	2020-12-01	33637L.KS
72	8845190	178188.98438	194500.00000	186500.00000	175000.00000	179500.00000	2020-01-01	035420.KS
73	10704873	172729.14062	191500.00000	178000.00000	172000.00000	174000.00000	2020-02-01	035420.KS
74	16165273	168758.35938	181000.00000	175000.00000	135000.00000	170000.00000	2020-03-01	035420.KS
75	14952320	196057.50000	200000.00000	166500.00000	162500.00000	197500.00000	2020-04-01	035420.KS
76	21720941	224349.34375	246000.00000	197500.00000	193500.00000	226000.00000	2020-05-01	035420.KS
77	26395703	265049.87500	289000.00000	233500.00000	225000.00000	267000.00000	2020-06-01	035420.KS
78	28482049	298801.56250	308500.00000	270000.00000	260500.00000	301000.00000	2020-07-01	035420.KS
79	21055145	320144.53125	347000.00000	301500.00000	299000.00000	322500.00000	2020-08-01	035420.KS
80	17195161	294334.43750	339500.00000	322500.00000	282000.00000	296500.00000	2020-09-01	035420.KS
81	13770718	287881.90625	307500.00000	296500.00000	280500.00000	290000.00000	2020-10-01	035420.KS
82	18816447	275473.18750	307000.00000	292000.00000	273500.00000	277500.00000	2020-11-01	035420.KS
83	13469782	290363.62500	300500.00000	282000.00000	280000.00000	292500.00000	2020-12-01	035420.KS
84	44811909	31970.91406	34753.70312	30925.75781	30220.61133	32033.84766	2020-01-01	035720.KS
85	66339665	34584.88281	38581.64453	31429.43555	31429.43555	34652.96484	2020-02-01	035720.KS
86	114366593	31267.15234	36869.14453	35156.64453	25687.51953	31328.69922	2020-03-01	035720.KS
87	82376673	36997.78906	37977.23438	31429.43555	30019.14062	37070.61719	2020-04-01	035720.KS
88	163833168	52983.24609	56311.07031	37070.61719	36264.73438	53087.53906	2020-05-01	035720.KS
89	137698767	53787.54297	58225.04297	53087.53906	49763.27344	53893.42188	2020-06-01	035720.KS
90	153811734	69069.22656	74141.23438	54699.30469	53893.42188	69205.19531	2020-07-01	035720.KS
91	139531935	81837.50000	84718.44531	70011.07812	68802.25781	81998.58594	2020-08-01	035720.KS
92	82765280	73291.81250	83811.82812	83308.14844	69809.60938	73436.08594	2020-09-01	035720.KS
93	50033321	66354.72656	77969.17188	73436.08594	65377.25391	66485.34375	2020-10-01	035720.KS
94	66344794	73995.57812	76659.61719	66586.07812	66082.39844	74141.23438	2020-11-01	035720.KS
95	67271794	78318.68750	79580.93750	74443.43750	73637.55469	78472.85156	2020-12-01	035720.KS
  • 해외 주식 데이터에도 동일하게 적용
df2 = pd.DataFrame()
for company in overseas_company_list:
    overseas_company_datas[company]["Date"] = overseas_company_datas[company].index
    overseas_company_datas[company]["Code"] = company
    df2 = pd.concat([df2, overseas_company_datas[company]], join='outer')
df2.reset_index(drop=True, inplace=True)
df2
	Volume	Adj Close	High	Open	Low	Close	Date	Code
0	73539900	20.51000	23.50000	19.57000	17.68000	20.51000	2020-01-01	MRNA
1	323753900	25.93000	36.00000	20.66000	17.91000	25.93000	2020-02-01	MRNA
2	397926200	29.95000	34.98000	27.00000	19.31000	29.95000	2020-03-01	MRNA
3	310717800	45.99000	56.38000	30.05000	29.44000	45.99000	2020-04-01	MRNA
4	650301000	61.50000	87.00000	48.71000	46.13000	61.50000	2020-05-01	MRNA
...	...	...	...	...	...	...	...	...
115	967254400	133.42409	135.75000	107.32500	107.15250	133.74500	2020-08-01	NVDA
116	1585655200	134.98036	147.26750	134.80000	117.04250	135.30499	2020-09-01	NVDA
117	802235600	125.07668	143.48500	137.58000	123.00000	125.34000	2020-10-01	NVDA
118	759482000	133.73347	146.91499	126.57750	123.95000	134.01500	2020-11-01	NVDA
119	512099600	130.27574	137.31250	134.92250	127.63250	130.55000	2020-12-01	NVDA
120 rows × 8 columns

데이터 저장

  • pd.to_csv()를 이용해서 csv 파일로 저장
df1.to_csv("C:/Users/SSAFY/Desktop/Project2/API_SCRIPT/korea.csv", sep=',', encoding='utf-8')
df2.to_csv("C:/Users/SSAFY/Desktop/Project2/API_SCRIPT/overseas.csv", sep=',', encoding='utf-8')

정상 저장 확인

0개의 댓글