如何制作箱线图,其中数据框对象中的每一行都是图中的一个框?
我有一些股票数据想要用箱线图绘制。我的数据来自雅虎财经,包括每个交易日的开盘价、最高价、最低价、收盘价、调整收盘价和成交量数据。我想绘制一个箱线图,其中每个箱体都是 1 天的 OHLC 价格走势。
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 …Run Code Online (Sandbox Code Playgroud) 我曾经通过javascript通过以下网址从雅虎金融API获取汇率: http://finance.yahoo.com/webservice/v1/symbols/jpy=x,eur=x/quote ?format=json
但现在它不再起作用了!我在网上搜索过但没有运气。任何帮助都会很棒,谢谢!
更新:用chrome手机打开就可以了
我正在尝试使用数据框绘制图表。
我正在使用“pandas_datareader”来获取数据。
所以我的代码如下:
tickers = ["AAPL","GOOG","MSFT","XOM","BRK-A","FB","JNJ","GE","AMZN","WFC"]
import pandas_datareader.data as web
import datetime as dt
end = dt.datetime.now().strftime("%Y-%m-%d")
start = (dt.datetime.now()-dt.timedelta(days=365*3)).strftime("%Y-%m-%d")
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
data = []
for ticker in tickers:
sub_df = web.get_data_yahoo(ticker, start, end)
sub_df["name"] = ticker
data.append(sub_df)
data = pd.concat(data)
Run Code Online (Sandbox Code Playgroud)
所以在变量 中data,有 8 列 =['Date', 'Open', 'High' ,'Low' ,'Close' 'Volume', 'Adj Close','name']
我想要做的是绘制一个图表,将“日期”值作为 x 参数,将“高”值作为 y 参数,将多列作为“名称”列值(=["AAPL","GOOG","MSFT" 、“XOM”、“BRK-A”、“FB”、“JNJ”、“GE”、“AMZN”、“WFC”])。
我怎样才能做到这一点?
当我执行时data.plot(),结果data很好地作为 x 参数,但有 5 …
由于之前的雅虎财经下载 URL 不再有效,我现在只剩下这样的内容:
有谁知道 period1 (和 period2)如何转换为日期(反之亦然)
任何帮助表示赞赏!
谢谢!
很长一段时间以来,我一直很高兴地使用从其他 stackoverflow 答案借用的代码来抓取 yahoo.finance 页面,并且效果很好,但是在过去的几周里,雅虎将其表格更改为可折叠/可展开的表格。这破坏了代码,尽管我尽了几天最大的努力,但仍无法修复该错误。
这是其他人使用多年的代码示例(然后由不同的人以不同的方式解析和处理)。
library(rvest)
library(tidyverse)
# Create a URL string
myURL <- "https://finance.yahoo.com/quote/AAPL/financials?p=AAPL"
# Create a dataframe called df to hold this income statement called df
df <- myURL %>%
read_html() %>%
html_table(header = TRUE) %>%
map_df(bind_cols) %>%
as_tibble()
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
编辑以获得更多清晰度:
如果你运行上面的命令,然后查看 df 你得到
# A tibble: 0 x 0
Run Code Online (Sandbox Code Playgroud)
对于预期结果的示例,我们可以尝试 yahoo 未更改的另一个页面,如下所示:
# Create a URL string
myURL2 <- "https://finance.yahoo.com/quote/AAPL/key-statistics?p=AAPL"
df2 <- myURL2 %>%
read_html() %>%
html_table(header = FALSE) %>%
map_df(bind_cols) %>%
as_tibble()
Run Code Online (Sandbox Code Playgroud)
如果您查看 df2,您会得到两个变量的 59 …
我正在尝试使用rapidAPI 访问个人项目的雅虎财经API。我注册了一个免费帐户并获得了 API 密钥。Rapid API 允许用户复制和粘贴代码来请求数据,因此我使用了他们的演示代码来访问 API。这是为了快速访问股票的详细信息:
import Foundation
let headers = [
"x-rapidapi-host": "apidojo-yahoo-finance-v1.p.rapidapi.com",
"x-rapidapi-key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" //private key
]
let request = NSMutableURLRequest(url: NSURL(string: "https://apidojo-yahoo-finance-
v1.p.rapidapi.com/stock/get-detail?region=US&lang=en&symbol=APPL")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,它给出错误 403。这意味着根据他们的网站 …
我使用雅虎财经(Python 中的 yfinance 库)来获取加密货币对的每日开盘价、收盘价、交易量、最小值、最大值。
我发现数据在 00:00 UTC(关闭/开放时间)重置,但新行仅在 02:00 UTC 添加。我需要最新一天 00:00 立即可用的数据。
有办法解决这个问题吗?我想我可以获取到目前为止的每分钟或每小时数据并总结数量。
pricedata = pdr.get_data_yahoo("BTC-ETH", start="2020-12-20", end="2020-12-22", interval = "1m")
Run Code Online (Sandbox Code Playgroud)
我是否缺少在 yfinance 中执行此操作的更简单方法?或者更快的 API?我会使用 alpha vantage,但他们不提供加密货币对的历史数据。
更新
我可以自己创建最后一天(19/12)的条目:
pricedata = pdr.get_data_yahoo(stock, start="2020-12-19", end="2020-12-20", interval = "1m")
Run Code Online (Sandbox Code Playgroud)
关闭:
print(pricedata['Close'][-1])
Run Code Online (Sandbox Code Playgroud)
打开:
print(pricedata['Close'][0])
Run Code Online (Sandbox Code Playgroud)
(稍微偏离但足够接近)
高的:
print(pricedata['High'].max())
Run Code Online (Sandbox Code Playgroud)
低的:
print(pricedata['Low'].min())
Run Code Online (Sandbox Code Playgroud)
但音量似乎不起作用。
print(pricedata['Volume'].sum())
Run Code Online (Sandbox Code Playgroud)
给我 50981730304,而每日报告值是 12830893778。如果我得到每小时值的总和而不是分钟值,我得到 2111141888。仍然很远......
我想一个“黑客”就是获取当前 24 小时的音量。但如果我在 01:00 UTC 得到这个信息,它就已经被“欺骗”了。老实说,我宁愿使用一个与每日历史记录同步的正确 API :)
到目前为止,我已经实施了这个修正,假设它可以改进一点(音量,只有在 00:00 UTC 检索时才有效,因为我还没有弄清楚如何在没有 2 小时延迟的情况下“返回”它):
yesterday = datetime.strptime(_end, '%Y-%m-%d').date() - timedelta(days=1)
yesterdayf = yesterday.strftime('%Y-%m-%d')
# TODO check if between …Run Code Online (Sandbox Code Playgroud) 我正在使用Yahoo的股票API来获取股票报价,如此处所述.
基本上,我只是组装一个这样的链接:
http://finance.yahoo.com/d/quotes.csv?s=DOW+MSFT+AAPL+GOOG&f=snl1
这将给我一份这些股票的当前价格清单(DOW,MSFT,AAPL,GOOG).
一切都很好,花花公子,但我也想获得纳斯达克和标准普尔500指数的信息,但我不知道该用什么作为符号.
我尝试了所有这些:
纳斯达克
INDEXNASDAQ
INDEXNASDAQ:.IXIC
INDEXNASDAQ.IXIC
IXIC
无济于事.
看起来我的整个想法都有缺陷(我对金融并不太了解).
谁能帮我这个?
我一直在尝试从特定符号(BHP.AX)获取具有特定开始和结束日期的股票报价历史记录.
这是我尝试过的查询:
select * from yahoo.finance.quotes where symbol in ("BHP.AX") and startDate = "2014-01-01" and endDate = "2014-06-16"
Run Code Online (Sandbox Code Playgroud)
我在YQL控制台上测试它:https://developer.yahoo.com/yql/console/
我错过了什么吗?因为控制台似乎没有吐出正确的数据.
上周,我已经使用此API开发和测试了。今天,我注意到即使从示例查询中也没有收到任何结果。
https://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20yahoo.finance.historicaldata%20where%20symbol%20%3D%20%22YHOO%22%20and%20startDate%20 %3D%20%222009-09-11%22%20and%20endDate%20%3D%20%222010-03-10%22&diagnostics = true&env = store%3A%2F%2Fdatatables.org%2Falltableswithkeys
有人遇到这个吗?
yahoo-finance ×10
pandas ×2
python ×2
api ×1
finance ×1
json ×1
matplotlib ×1
numpy ×1
plot ×1
python-2.7 ×1
r ×1
rapidapi ×1
rvest ×1
swift ×1
web-scraping ×1
yahoo ×1
yahoo-api ×1
yfinance ×1
yql ×1