gpt4 book ai didi

python-2.7 - Pandas DataFrame Matplotlib BoxPlot 框

转载 作者:行者123 更新时间:2023-12-03 23:29:18 26 4
gpt4 key购买 nike

如何制作一个箱线图,其中我的数据框对象中的每一行都是图中的一个框?

我有一些想要用箱线图绘制的股票数据。我的数据来自雅虎财经,包括每个交易日的开盘价、最高价、最低价、收盘价、调整后收盘价和成交量数据。我想绘制一个箱线图,其中每个箱是 OHLC 价格行为的 1 天。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.io.data import DataReader

# get daily stock price data from yahoo finance for S&P500
SP = DataReader("^GSPC", "yahoo")

SP.head()
Open High Low Close Volume Adj Close
Date
2010-01-04 1116.56 1133.87 1116.56 1132.99 3991400000 1132.99
2010-01-05 1132.66 1136.63 1129.66 1136.52 2491020000 1136.52
2010-01-06 1135.71 1139.19 1133.95 1137.14 4972660000 1137.14
2010-01-07 1136.27 1142.46 1131.32 1141.69 5270680000 1141.69
2010-01-08 1140.52 1145.39 1136.22 1144.98 4389590000 1144.98

plt.figure()
bp = SP.boxplot()

但是当我将此数据框绘制为箱线图时,我只会得到一个包含整个 Volume 列的 Open、High、Low 和 Close 值的框。

同样,我尝试重新采样调整后的每日价格数据以获得每周 OHLC:
close = SP['Adj Close']
wk = close.resample('W', how='ohlc')
wk.head()

open high low close
Date
2010-01-10 1132.99 1144.98 1132.99 1144.98
2010-01-17 1146.98 1148.46 1136.03 1136.03
2010-01-24 1150.23 1150.23 1091.76 1091.76
2010-01-31 1096.78 1097.50 1073.87 1073.87
2010-02-07 1089.19 1103.32 1063.11 1066.19

这会产生一个包含 4 个框的框图。每个框是每列的范围,而不是行。例如,第一个框“开盘”显示整个“开盘”列的开盘价、收盘价、最高价和最低价。

但我真正想要的是每个“日期”(DataFrame 的索引或行)的 1 个框。所以第一个框将显示第一行的 OHLC,'2010-01-10'。第二个框将是第二行('2010-01-17')。

我真正想要的是我的原始每日数据 (SP DataFrame) 中的每一行都是它自己的 OHLC Box。基本上我想要每日烛台,生成为 boxplot()。
                 Open        High        Low         Close     
Date
2010-01-04 1116.56 1133.87 1116.56 1132.99

如何使用 Pandas DataFrame 和 Matplotlib boxplot() 执行此操作?我只想要一个基本的箱线图,其中 DataFrame 中的每一行都是图中的一个 OHLC 框。在这一点上没什么特别的。谢谢!

最佳答案

正如我在评论中所说,您并不真正想要箱线图。相反,您应该制作烛台图表。这里有一些代码可以帮助您入门。

import numpy as np
import pandas
import matplotlib.pyplot as plt
from matplotlib.finance import candlestick, candlestick2
import matplotlib.dates as mdates
from pandas.io.data import DataReader

# get daily stock price data from yahoo finance for S&P500
SP = DataReader("^GSPC", "yahoo")
SP.reset_index(inplace=True)
print(SP.columns)
SP['Date2'] = SP['Date'].apply(lambda date: mdates.date2num(date.to_pydatetime()))
fig, ax = plt.subplots()
csticks = candlestick(ax, SP[['Date2', 'Open', 'Close', 'High', 'Low']].values)
plt.show()

关于python-2.7 - Pandas DataFrame Matplotlib BoxPlot 框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20573310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com