데이터 정리를 위한 메소드
다음은 일정기간 코스피 주가자료를 호출한 것입니다(yahoo finantical 자료 호출 참조).
import numpy as np import pandas as pd import yfinance as yf
st=pd.Timestamp(2024, 9, 1) et=pd.Timestamp(2024, 9,22) d=yf.download("^KS11", start=st, end=et) d.head(2)
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2024-09-19 | 2594.669922 | 2598.679932 | 2550.090088 | 2580.800049 | 2580.800049 | 385100 |
2024-09-20 | 2603.830078 | 2619.550049 | 2591.399902 | 2593.370117 | 2593.370117 | 496000 |
query()
메서드: dataframe의 열에 대해 블리언 식을 평가합니다.
다음은 종가가 시가에 비해 큰 날짜(인덱스)를 호출한 것입니다.
d.query("Open < Close").index
DatetimeIndex(['2024-09-09', '2024-09-12', '2024-09-13'], dtype='datetime64[ns]', name='Date', freq=None)
query()
메서드의 인수는 string입니다. 그러나 키워드 "@
"를 사용하여 변수(객체)를 인수로 지정할 수 있습니다. 다음은 데이터 d의 마지막 종가를 query의 인수로 지정하기 위해 '@'를 적용한 것입니다.
b=d.Close[-1] d.query("Close>@b")
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2024-09-02 | 2683.800049 | 2686.979980 | 2658.310059 | 2681.000000 | 2681.000000 | 267000 |
2024-09-03 | 2683.120117 | 2695.590088 | 2664.629883 | 2664.629883 | 2664.629883 | 303500 |
df.filter(items, like, regex, axis)
메소드: 지정한 조건에 따라 행 또는 열을 추출합니다.
d1=d.filter(items=["Open", "Close"]) d1.head(2)
Open | Close | |
---|---|---|
Date | ||
2024-09-02 | 2683.800049 | 2681.000000 |
2024-09-03 | 2683.120117 | 2664.629883 |
d1.query('Open<Close')
Open | Close | |
---|---|---|
Date | ||
2024-09-09 | 2498.669922 | 2535.929932 |
2024-09-12 | 2547.500000 | 2572.090088 |
2024-09-13 | 2571.810059 | 2575.409912 |
d.filter(like="Volume", axis=1).tail(3)
Volume | |
---|---|
Date | |
2024-09-13 | 358300 |
2024-09-19 | 385100 |
2024-09-20 | 496000 |
.sort_values()
메소드를 적용하여 올림차순으로 정렬할 수 있습니다. 내림차순으로 정렬하기 위해서는 인수 ascending=False로 지정합니다.
d.sort_values("Close").index
DatetimeIndex(['2024-09-11', '2024-09-10', '2024-09-09', '2024-09-06', '2024-09-12', '2024-09-13', '2024-09-05', '2024-09-04', '2024-09-19', '2024-09-20', '2024-09-03', '2024-09-02'], dtype='datetime64[ns]', name='Date', freq=None)
idx=d.Close.argmin() d.index[idx]
Timestamp('2024-09-11 00:00:00')
d.sort_values("Close", ascending=False).index
DatetimeIndex(['2024-09-02', '2024-09-03', '2024-09-20', '2024-09-04', '2024-09-19', '2024-09-05', '2024-09-13', '2024-09-12', '2024-09-06', '2024-09-09', '2024-09-10', '2024-09-11'], dtype='datetime64[ns]', name='Date', freq=None)
메서드 rank()
를 사용하여 각 값의 순위를 확인할 수 있습니다.
d["Close"].rank()
Date 2024-09-02 12.0 2024-09-03 11.0 2024-09-04 8.5 2024-09-05 7.0 2024-09-06 4.0 2024-09-09 3.0 2024-09-10 2.0 2024-09-11 1.0 2024-09-12 5.0 2024-09-13 6.0 2024-09-19 8.5 2024-09-20 10.0 Name: Close, dtype: float64
댓글
댓글 쓰기