如何找到每个交易日的股票低点?

2024-04-29 18:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个csv,里面有微软的分钟股票数据。我试图找到每个交易日的低点。代码如下所示:

ticker='MSFT'
df = pd.read_csv('/Volumes/Seagate Portable/S&P 500 List/{}.txt'.format(ticker))
df.columns = ['Extra', 'Dates', 'Open', 'High', 'Low', 'Close', 'Volume']
df.Dates = pd.to_datetime(df.Dates)
df.set_index(df.Dates, inplace=True)
df.drop(['Extra', 'High', 'Volume', 'Dates', 'Open'], axis=1, inplace=True)
df = df.between_time('9:30', '16:00')
df['Low'] = df.Low.groupby(by=[df.index.day]).min()
df

输出为:

                     Low    Close
Dates       
2020-01-02 09:30:00 NaN 158.610
2020-01-02 09:31:00 NaN 158.380
2020-01-02 09:32:00 NaN 158.620
2020-01-02 09:33:00 NaN 158.692
2020-01-02 09:34:00 NaN 158.910
... ... ...
2020-12-18 15:56:00 NaN 218.700
2020-12-18 15:57:00 NaN 218.540
2020-12-18 15:58:00 NaN 218.710
2020-12-18 15:59:00 NaN 218.150
2020-12-18 16:00:00 NaN 218.500

所以问题是,低点充满了NaN值,我之所以要测量是因为我错过了使用groupby。我也尝试过:

ticker='MSFT'
df = pd.read_csv('/Volumes/Seagate Portable/S&P 500 List/{}.txt'.format(ticker))
df.columns = ['Extra', 'Dates', 'Open', 'High', 'Low', 'Close', 'Volume']
df.Dates = pd.to_datetime(df.Dates)
df.set_index(df.Dates, inplace=True)
df.drop(['Extra', 'High', 'Volume', 'Dates', 'Open'], axis=1, inplace=True)
df = df.between_time('9:30', '16:00')
df = df.groupby(by=[df.index.day]).min()
df

其输出为:

         Low    Close
Dates       
1   150.8200    150.9800
2   150.3600    150.8400
3   152.1900    152.2800
4   165.6200    165.7000
5   165.6900    165.8200
6   156.0000    156.0700
7   157.3200    157.3500
8   157.9491    158.0000
9   150.0000    150.2700
10  152.5800    152.7950
11  151.1500    151.1930
12  138.5800    138.7600
13  140.7300    140.8700
14  161.7200    161.7500
15  162.5700    162.6300
16  135.0000    135.3300
17  135.0000    135.3400
18  135.0200    135.2600
19  139.0000    139.1300
20  135.8600    136.5900
21  166.1102    166.2100
22  165.6800    165.6900
23  132.5200    132.7100
24  141.2700    141.6481
25  144.4400    144.8102
26  148.3700    149.7000
27  149.2000    149.2700
28  152.0000    153.8152
29  165.6900    165.7952
30  150.0100    152.7200
31  156.5600    157.0450

问题是,它正在寻找关闭和打开的低点。此外,总共只有31行,不过应该还有更多的行,因为这是一个2020年的数据集。我认为这样做是不对的,因为我看了前31天每天的收盘价,不可能这些都是这些天的低点。所以问题是,我如何才能找到每天的低点,而不影响收尾专栏,并避免上述问题


Tags: truedfcloseindexopennanextralow
1条回答
网友
1楼 · 发布于 2024-04-29 18:27:37

试试这个:

unique_dates = list(set([str(date).split()[0] for date in df.index]))

min_values_daily = [min(df.loc[df.index==date].Close) for date in unique_dates] 

最后,创建一个新的数据帧:

low_data = pd.DataFrame({
     'date': unique_dates,
     'low': min_values_daily
})

相关问题 更多 >