INVESTAR / StockAnalysisInPython

456 stars 412 forks source link

데이터 읽어올때 DB사용하지 않고 CSV파일을 불러와서 이용하려고 하는 도중에 오류해결 문의드립니다. #57

Open boozesounds opened 3 years ago

boozesounds commented 3 years ago

안녕하세요. 책 구매해서 공부중인 학생입니다.

raw_df = pd.read_csv('ohlcv데이터파일.csv') raw_df.head() 이런식으로 불러오려하는데 코드를 작성하다가

  1. dfx = raw_df[['Open','High','Low', 'Close', 'Volume']]
  2. dfx = MinMaxScaler(dfx)
  3. dfy = dfx[['Close']] 위 구문 중 2번 구문에서

TypeError Traceback (most recent call last) /usr/local/lib/python3.7/dist-packages/pandas/core/ops/array_ops.py in na_arithmetic_op(left, right, op, is_cmp) 142 try: --> 143 result = expressions.evaluate(op, left, right) 144 except TypeError:

12 frames TypeError: unsupported operand type(s) for -: 'str' and 'str'

During handling of the above exception, another exception occurred:

TypeError Traceback (most recent call last) /usr/local/lib/python3.7/dist-packages/pandas/core/ops/array_ops.py in masked_arith_op(x, y, op) 90 if mask.any(): 91 with np.errstate(all="ignore"): ---> 92 result[mask] = op(xrav[mask], yrav[mask]) 93 94 else:

TypeError: unsupported operand type(s) for -: 'str' and 'str'

이런오류가 생기네요.. 도와주세요.ㅠㅠ!!

INVESTAR commented 3 years ago

MinMaxScaler() 함수가 직접 작성하신 함수인지 sklearn.preprocessing에 존재하는 MinMaxScaler()인지 알 수 없으나 에러 메시지만 봐서는 MinMaxScaler() 내부에서 문자열 피연산자를 지원하지 않아서 오류가 발생하는 것 같습니다. 1번 라인을 실행한 후 dfx를 출력해서 'ohlcv데이터파일.csv'에서 읽어온 데이터가 숫자 자료형으로 데이터프레임에 저장되어 있는지 확인이 필요할 것 같습니다.

만일 sklearn.preprocessing에 존재하는 MinMaxScaler()를 사용하고자 하셨다면 아래 페이지를 통해서 대략적인 사용법을 참고하시기 바랍니다. https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html

>>> from sklearn.preprocessing import MinMaxScaler
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data))
MinMaxScaler()
>>> print(scaler.data_max_)
[ 1. 18.]
>>> print(scaler.transform(data))
[[0.   0.  ]
 [0.25 0.25]
 [0.5  0.5 ]
 [1.   1.  ]]
>>> print(scaler.transform([[2, 2]]))
[[1.5 0. ]]