본문 바로가기

Python

(89)
[python] 소수점 반올림, 올림, 내림하는 코드 반올림 >>> num = 1.234512345 >>> >>> round(num, 3) # 반올림해서 3번째 자리수까지 나타냄 1.235 >>> round(num, 4) # 반올림해서 4번째 자리수까지 나타냄 1.2345 python에서 반올림 하는 방법은 round 함수를 이용하는 것이다. round 함수에 첫번째 인자로는 소수값을 주고, 2번째 값은 나타낼 자리수를 준다. 만약 round(1.2345, 3)을 하면 소수점 4번째에서 반올림을 하고 소수점 3번째 까지의 값으로 만들어준다. num = 1.234 >>> round(num) 1 만약 따로 인자를 주지 않으면 소수 첫째 자리에서 반올림한다. >>> round(123.456, -1) 120.0 >>> round(125.556, -2) 100.0 ..
[python] 여러개의 공백 하나로 만드는 코드 만약 문자열이 아래와 같다고 가정해보자. str = "a b c d e f" 만약 위 문자열의 공백(Space)를 하나로 만들어서 아래와 같은 문자열로 만들고 싶다면 어떻게 해야할까? a b c d e f 변환방법 str = "a b c d e f" new_str = ' '.join(str.split()) print(new_str) # 출력 a b c d e f 코드를 소개하면 위와 같다. ' '.join(str.split()) 부분은 str 변수를 split함수를 통해서 공백단위로 쪼개고 리스트로 만든후 join 함수를 통해서 ' '(공백) 한개로 합치는 명령이다. 참고 : join과 split에 대한 소개글 (https://devpouch.tistory.com/77)
[pandas] SettingWithCopyWarning 경고 끄기 pandas에서 코드를 실행하던 중 아래와 같은 에러를 만났다. /root/test/venv/lib/python3.7/site-packages/pandas/core/series.py:1056: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy cacher_needs_updating = self._check_is_chained_assignment_pos..
[python pandas] 주식 이격도(disparity) 구하기 이격도란? 현재 주가가 이동평균선을 기준으로 얼마나 떨어져 있는지, 즉 괴리 정도를 나타내는 지표다. 값이 100%이상일 경우 주가가 이동평균선 위에 있다는 것이고 값이 더 클수록 주가가 이평선을 크게 상회한다는 것을 나타낸다. 반대로 값이 100%미만일 경우 주가가 이평선 아래 있다는 것을 뜻한다. 이격도 수식 이격도(%) = (현재 주가 / n일 이동평균값) X 100 Pandas Code # 기준 이동평균일 w= 20 # 종가기준으로 이동평균선 값을 구함 df["MA"]=df["close"].rolling(w).mean() # 시가가 이평선 기준으로 얼마나 위에 있는지 구함 df['disparity'] = 100*(df["open"]/df["MA"]) 이동평균일은 원하는 대로 고쳐서 쓸 수 있고, ..
[python pandas] 주식 이동평균선 구하기 주식 데이터 분석시 가장 흔하고 직관적으로 사용할 수 있는 지표중 하나는 바로 이동 평균선이다. 자동매매 분석시 이동 평균선 값을 구하는 공식은 아래와 같이 간단하다. 만약 아래와 같이 데이터 프레임이 있다고 하자. open high low close volume value 2021-10-11 14:00:00 804.0 808.0 803.0 803.0 299713.198437 2.412913e+08 2021-10-11 14:30:00 803.0 806.0 802.0 803.0 228441.392254 1.836110e+08 2021-10-11 15:00:00 803.0 806.0 801.0 805.0 237611.502845 1.907923e+08 2021-10-11 15:30:00 805.0 814.0..