tushare 주식 데이터 분석에서 겪은 문제
1537 단어 양적 교역
처리 과정에서 발생한 문제를 기록해 봅시다.
1. 함수마다 데이터 인덱스를 얻는datetime 형식이 다르다
import tushare as ts
HS300=ts.get_h_data(code='000300',start='2018-01-01',end='2019-05-28',index=True)
PFbank=ts.get_hist_data(code='600000',start='2018-01-01',end='2019-5-27')
type(HS300.index)과 type(PFbank.index)의 결과는 다르기 때문에 직접 pd.콘캣이 틀릴 거야.
pd 사용을 권장합니다.to_datetime () 은 두 색인을 같은 형식으로 변경합니다.
2. 개주 거래 정보는 휴장일에 생략한다. 어떤 개주는 비거래일의 잘못된 정보를 가지고 있다.
어떤 주식은 2019년 5월 30일 휴장하고ts.gethist_데이터는 5월 30일 색인이 없습니다.따라서 같은 시간 구간에서 되돌아오는 데이터의 길이가 일치하지 않으니 주의해야 한다.상해심 300성분주에 대해 같은 해의 데이터를 다운로드하면 어떤 주식은 몇 십 줄의 데이터가 적어져 뒤의 데이터 처리에 불리하다.
tushare에서 제공하는 API는 부족한 거래일 정보를 자동으로 채울 수 없으며, 이것은 우리가 직접 해야 한다.나의 방법은 비교적 촌스럽다. 첫 번째 단계는 상해심 300의 지수 거래일을 기준으로 개주의 색인datetime를 보충한 다음에 개주의 비거래일 정보를 삭제한다.두 번째 단계는 채워진 NaN 빈 값을 전 거래일 데이터로 먼저 채운 다음에 다음 거래일 데이터로 채워서 이 시간 구간에 모든 빈 값이 채워져 있는지 확인한다.
# 300 , 。
HS300['temporary']=1
tradeday=HS300['temporary']
# datetime
for each in PFbank.index:
if each not in tradeday.index:
PFbank=PFbank.drop(index=each)
# dataframe
PFbank=pd.concat([tradeday,PFbank],axis=1)
# NaN , NaN
PFbank=PFbank.fillna(method='ffill')
PFbank=PFbank.fillna(method='bfill')
#
print(PFbank.isnull.sum())