FinanceData / FinanceDataReader

Financial data reader
1.1k stars 357 forks source link

복수 종목 조회 시 정렬 문제 #204

Closed QuantKang closed 4 months ago

QuantKang commented 5 months ago

여러 종목을 한 번에 가져올 때 정렬이 유지되지 않는 경우가 있습니다. (TSLA는 미국 주식, TSL3.L은 영국 주식입니다)

df = fdr.DataReader('TSLA, TSL3.L')
df.tail
            TSLA   TSL3.L
Date
2023-06-19   NaN  0.48325
2023-07-04   NaN  0.56353
2023-09-04   NaN  0.32584
2023-11-23   NaN  0.23100
2024-01-15   NaN  0.17766

dropna()reset_index()를 해야 순서가 다시 제대로 설정됩니다.

df.dropna().tail()
                  TSLA   TSL3.L
Date
2024-01-30  191.589996  0.11011
2024-01-31  187.289993  0.10265
2024-02-01  188.860001  0.10519
2024-02-02  187.910004  0.10356
2024-02-05  181.059998  0.08620
df.sort_index().tail()
                  TSLA   TSL3.L
Date
2024-01-30  191.589996  0.11011
2024-01-31  187.289993  0.10265
2024-02-01  188.860001  0.10519
2024-02-02  187.910004  0.10356
2024-02-05  181.059998  0.08620
FinanceData commented 4 months ago

처음 쓴 내용에서는 tail을 그대로 호출하신 듯 합니다. 다음 두 가지의 차이가 아닌지 확인 부탁 드려요.

df.tail
df.tail()
>>> df.tail
<bound method NDFrame.tail of                   TSLA     TSL3.L
Date
2010-06-29    1.592667        NaN
2010-06-30    1.588667        NaN
2010-07-01    1.464000        NaN
2010-07-02    1.280000        NaN
2010-07-06    1.074000        NaN
...                ...        ...
2024-02-28  202.039993  25.712610
2024-02-29  201.880005  25.641140
2024-03-01  202.639999  25.920561
2024-03-04  188.139999  20.324699
2024-03-05  178.960007  17.129000
>>> df.tail()
                  TSLA     TSL3.L
Date
2024-02-28  202.039993  25.712610
2024-02-29  201.880005  25.641140
2024-03-01  202.639999  25.920561
2024-03-04  188.139999  20.324699
2024-03-05  178.960007  17.129000
QuantKang commented 4 months ago

확인해 보니 tail 문제는 아닌 듯 합니다.

df = fdr.DataReader('TSLA, TSL3.L')
df 
                TSLA     TSL3.L
Date
2010-06-29  1.592667        NaN
2010-06-30  1.588667        NaN
2010-07-01  1.464000        NaN
2010-07-02  1.280000        NaN
2010-07-06  1.074000        NaN
...              ...        ...
2023-07-04       NaN   0.563530
2023-09-04       NaN   0.325840
2023-11-23       NaN   0.231000
2024-01-15       NaN   0.177660
2024-02-19       NaN  25.283609

아래와 같이 조회한 데이터를 iloc으로 바로 사용하는 경우 예상과 다른 결과가 나올 수 있습니다.

df.iloc[-5: ]
            TSLA     TSL3.L
Date
2023-07-04   NaN   0.563530
2023-09-04   NaN   0.325840
2023-11-23   NaN   0.231000
2024-01-15   NaN   0.177660
2024-02-19   NaN  25.283609
df.sort_index().iloc[-5: ]
                  TSLA     TSL3.L
Date
2024-02-28  202.039993  25.712610
2024-02-29  201.880005  25.641140
2024-03-01  202.639999  25.920561
2024-03-04  188.139999  20.324699
2024-03-05  180.740005  17.129000
FinanceData commented 4 months ago

현재, 아래와 같이 잘 수행되고 말씀 하신 내용으로 재현이 안됩니다. (Colab과 로컬 PC 양쪽에서 테스트 하였습니다)

import FinanceDataReader as fdr 

df = fdr.DataReader('TSLA, TSL3.L')
df
TSLA    TSL3.L
Date        
2010-06-29  1.592667    NaN
2010-06-30  1.588667    NaN
2010-07-01  1.464000    NaN
2010-07-02  1.280000    NaN
2010-07-06  1.074000    NaN
... ... ...
2024-03-04  188.139999  20.324699
2024-03-05  180.740005  17.915140
2024-03-06  176.539993  16.658560
2024-03-07  178.649994  17.249041
2024-03-08  175.339996  16.216999
3466 rows × 2 columns
df.iloc[-5:]
TSLA    TSL3.L
Date        
2024-03-04  188.139999  20.324699
2024-03-05  180.740005  17.915140
2024-03-06  176.539993  16.658560
2024-03-07  178.649994  17.249041
2024-03-08  175.339996  16.216999
df.sort_index()[-5:]
TSLA    TSL3.L
Date        
2024-03-04  188.139999  20.324699
2024-03-05  180.740005  17.915140
2024-03-06  176.539993  16.658560
2024-03-07  178.649994  17.249041
2024-03-08  175.339996  16.216999

해상 데이터 사이트의 일시적인 문제이거나 업데이트의 문제일 수 있습니다.
다시 수행해봐주시거나 업데이트 하고 수행해 보시는 것도 해봐주시면 감사합니다.

pip install -U finance-datareader
QuantKang commented 4 months ago

다른 라이브러리 버전이 문제였던 것 같습니다.

모든 라이브러리를 업데이트하니 해당 문제가 사라졌습니다.

확인 감사드립니다.