목차
Summary
다른 일 때문에 돌려놓고 잠시 잊고 있던 파이썬 코드에서 'FutureWarning' 어쩌구 에러가 발생하는 부분이 있어서 찾아보니
라이브러리가 수정되는 문제였다. 바로 수정은 했으나,,, 좀 당황스러운게 불과 1년 사이에 이렇게 바뀌는데
파이썬을 사용하는 찐 개발자들은 어떻게 관리 및 수정하는지 궁금해진다.
(C 처럼 직접 라이브러리 만들어서 사용하는 건지 아시는분은 댓글좀요)
코드는 아래처럼 가상화폐 사이트에서 가격 데이터의 이동편균을 계산하여
추세가 UP(상승추세)/down(하락추세) 결과를 출력해주는 코드이다.
이 계산이 잘못되면 else문으로 하락추세만 return 될 것이기 때문에 예외처리도 추가해야겠다.
def GET_MARKET_TREND(self, ticker, price, days_short):
ticker_bithumb = ticker.split('-')[1]
try:
df = fetch_data(lambda: pybithumb.get_ohlcv(ticker_bithumb))
ma_short = df['close'].rolling(window=days_short, min_periods=1).mean()
last_ma_short = ma_short[-2] + price
trend = None
if price > last_ma_short:
trend = "up"
else:
trend = "down"
mlog(ticker,price,last_ma_short,trend)
return trend
except Exception as e:
mlog(e)
return 0
위 코드를 실행한 결과 아래와 같은 메세지가 출력된다.
FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version,
integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value
by position, use `ser.iloc[pos]`
Series.__getitem__ 이라는 객체를 사용할 때 앞으로 값에 액세스 하기 위해서
ser[N] -> ser.iloc[N] 으로 사용해야 한다는 경고문이다.
'ma_short' 변수가 pandas의 Series 객체 타입이기 때문에 발생한 것이다.
수정은 간단했다. ' ma_short [-2]' -> 'ma_short.iloc[-2]' 로 변경하니 에러가 출력되지 않았다.
또 하나 배웠다..
'Python > 파이썬 문법' 카테고리의 다른 글
(Python) JSON 모듈이란? (1) | 2024.01.11 |
---|---|
(Python) JSON 데이터 통신 (서버/클라이언트) (0) | 2024.01.11 |
(Python) 파이썬 TCP 소켓 통신 (서버/클라이언트) (1) | 2024.01.11 |
(Python) 파이썬 기초 문법(1) - 변수 (1) | 2023.12.26 |