일본 엔 미국 달러의 데이터 분석
8583 단어 자신의 메모
0주의
이 기사는 지식의 공유 목적이 아니고, 프로그래밍해 가는 과정에서 자신의 과거의 작업을 보답할 필요가 있을 때에 대비해, 기록해 두기 위한 것입니다.
그 때문에 필요 최소한의 메모와 파일의 인용 밖에 하지 않고, Qiita의 기사를 참고로 하여 일본 엔 미국 달러의 데이터 분석을 실시하는 것을 목적으로 하는 분은, 다른 투고자의 기사를 참고로 하는 것을 적극 권장합니다.
1 csv 파일에서 pandas로로드
「날짜」의 데이터형이 str이었기 때문에 datetime에 조정.
test01.py
def main():
fname01 = "USDJPY_test01.csv"
df = pd.read_csv(fname01,sep=',')
df['日付け'] = pd.to_datetime(df['日付け'],format='%Y年%m月%d日')
#実行結果
#日付け 終値 始値 高値 安値 前日比%
#0 2019-03-05 111.89 111.72 112.12 111.70 0.13%
#1 2019-03-04 111.75 111.77 112.02 111.64 -0.15%
#2 2019-03-01 111.92 111.39 112.08 111.33 0.48%
#3 2019-02-28 111.39 111.00 111.50 110.66 0.35%
#4 2019-02-27 111.00 110.58 111.08 110.36 0.38%
#日付け datetime64[ns]
#終値 float64
#始値 float64
#高値 float64
#安値 float64
#前日比% object
#dtype: object
2 변화율 분석
어느 날에 수치가 크게 상승 또는 하강했을 경우, 다음 날은 그 반대의 움직임을 하는 설을 검증하고 싶다.
2.1 변화율을 히스토그램으로 플롯하여 표시.
test01.py
df['前日比%'].plot.hist(bins=200,range=(-2,2))
plt.show()
예상했지만 정규 분포에 가까운 형태로 되어 있다.
2.2 변화율의 크기와 다음날의 움직임의 상관 계수를 조사한다.
test01.py
l=[]
for i in range(0,200,1):
#cnt1: しきい値よりも変化率が大きい かつ 次の日に前日の動きと逆の動きをした 日数
cnt1 = df[((df['前日比%'] >= i*0.01)&(df['前日比%'].shift(1)<0) ) | ((df['前日比%'] <= i*-0.01)&(df['前日比%'].shift(1)>0) ) ]
#cnt2: しきい値よりも変化率が大きい日数
cnt2 = df[(df['前日比%'] >= i*0.01) | (df['前日比%'] <= i*-0.01) ]
l.append(cnt1['日付け'].count()/cnt2['日付け'].count()*100)
res=pd.DataFrame({'d1': [i * 0.01 for i in range(0,200,1)],
'd2': l })
print(res.corr())
print(res[res['d2'] >= 60])
#res['d2'].plot.hist()
res.plot(kind='scatter',x='d1',y='d2')
plt.show()
#実行結果
# d1 d2
#d1 1.000000 0.707159
#d2 0.707159 1.000000
변화율의 최대치는 5.35였다.
변화율의 임계치를 0~5.35로 변화시켜, 변화율이 커질수록, 다음 날에 그 변화율과는 반대의 움직임을 할 확률이 높아지는지를 임계치마다 조사했다.
결과는 상관 계수는 0.70으로 약간 상관이 있다고 하는 모습.
그러나 산점도를 보면 임계값이 4.0 이상인 데이터가 부적절하다.
이 부분을 제외하고 상관을 생각하면 매우 약한 것을 알 수 있다.
보다 정확한 확률을 구하기 위해 도수 분포를 사용해 보자.
2.2도 분포 생성
Reference
이 문제에 관하여(일본 엔 미국 달러의 데이터 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/iondesu2014/items/21fc6557d8547b082bfd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
「날짜」의 데이터형이 str이었기 때문에 datetime에 조정.
test01.py
def main():
fname01 = "USDJPY_test01.csv"
df = pd.read_csv(fname01,sep=',')
df['日付け'] = pd.to_datetime(df['日付け'],format='%Y年%m月%d日')
#実行結果
#日付け 終値 始値 高値 安値 前日比%
#0 2019-03-05 111.89 111.72 112.12 111.70 0.13%
#1 2019-03-04 111.75 111.77 112.02 111.64 -0.15%
#2 2019-03-01 111.92 111.39 112.08 111.33 0.48%
#3 2019-02-28 111.39 111.00 111.50 110.66 0.35%
#4 2019-02-27 111.00 110.58 111.08 110.36 0.38%
#日付け datetime64[ns]
#終値 float64
#始値 float64
#高値 float64
#安値 float64
#前日比% object
#dtype: object
2 변화율 분석
어느 날에 수치가 크게 상승 또는 하강했을 경우, 다음 날은 그 반대의 움직임을 하는 설을 검증하고 싶다.
2.1 변화율을 히스토그램으로 플롯하여 표시.
test01.py
df['前日比%'].plot.hist(bins=200,range=(-2,2))
plt.show()
예상했지만 정규 분포에 가까운 형태로 되어 있다.
2.2 변화율의 크기와 다음날의 움직임의 상관 계수를 조사한다.
test01.py
l=[]
for i in range(0,200,1):
#cnt1: しきい値よりも変化率が大きい かつ 次の日に前日の動きと逆の動きをした 日数
cnt1 = df[((df['前日比%'] >= i*0.01)&(df['前日比%'].shift(1)<0) ) | ((df['前日比%'] <= i*-0.01)&(df['前日比%'].shift(1)>0) ) ]
#cnt2: しきい値よりも変化率が大きい日数
cnt2 = df[(df['前日比%'] >= i*0.01) | (df['前日比%'] <= i*-0.01) ]
l.append(cnt1['日付け'].count()/cnt2['日付け'].count()*100)
res=pd.DataFrame({'d1': [i * 0.01 for i in range(0,200,1)],
'd2': l })
print(res.corr())
print(res[res['d2'] >= 60])
#res['d2'].plot.hist()
res.plot(kind='scatter',x='d1',y='d2')
plt.show()
#実行結果
# d1 d2
#d1 1.000000 0.707159
#d2 0.707159 1.000000
변화율의 최대치는 5.35였다.
변화율의 임계치를 0~5.35로 변화시켜, 변화율이 커질수록, 다음 날에 그 변화율과는 반대의 움직임을 할 확률이 높아지는지를 임계치마다 조사했다.
결과는 상관 계수는 0.70으로 약간 상관이 있다고 하는 모습.
그러나 산점도를 보면 임계값이 4.0 이상인 데이터가 부적절하다.
이 부분을 제외하고 상관을 생각하면 매우 약한 것을 알 수 있다.
보다 정확한 확률을 구하기 위해 도수 분포를 사용해 보자.
2.2도 분포 생성
Reference
이 문제에 관하여(일본 엔 미국 달러의 데이터 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/iondesu2014/items/21fc6557d8547b082bfd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
df['前日比%'].plot.hist(bins=200,range=(-2,2))
plt.show()
l=[]
for i in range(0,200,1):
#cnt1: しきい値よりも変化率が大きい かつ 次の日に前日の動きと逆の動きをした 日数
cnt1 = df[((df['前日比%'] >= i*0.01)&(df['前日比%'].shift(1)<0) ) | ((df['前日比%'] <= i*-0.01)&(df['前日比%'].shift(1)>0) ) ]
#cnt2: しきい値よりも変化率が大きい日数
cnt2 = df[(df['前日比%'] >= i*0.01) | (df['前日比%'] <= i*-0.01) ]
l.append(cnt1['日付け'].count()/cnt2['日付け'].count()*100)
res=pd.DataFrame({'d1': [i * 0.01 for i in range(0,200,1)],
'd2': l })
print(res.corr())
print(res[res['d2'] >= 60])
#res['d2'].plot.hist()
res.plot(kind='scatter',x='d1',y='d2')
plt.show()
#実行結果
# d1 d2
#d1 1.000000 0.707159
#d2 0.707159 1.000000
Reference
이 문제에 관하여(일본 엔 미국 달러의 데이터 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/iondesu2014/items/21fc6557d8547b082bfd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)