gpt4 book ai didi

python - 网络抓取数据并使用 pandas read_html 将其转换为数据框并将数据集合并在一起

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:52 25 4
gpt4 key购买 nike

我对 python 有点陌生,我的代码有一些问题。如果对我尝试做的事情有任何建议,我将不胜感激。

import pandas as pd
from bs4 import BeautifulSoup
import requests

def trade():
tickers = ["AAPL","AMZN", "INTC", "MSFT", "SNAP"]
for ticker in tickers:
url = "http://finance.yahoo.com/quote/%s?p=%s"%(ticker,ticker)
res = requests.get(url)
soup = (BeautifulSoup(res.content, 'lxml'))
table = soup.find_all('table')[0]
df = pd.read_html(str(table))
print("DF")
print(df)
df_string = str(df)
print(df_string_parse)
print(type(df_string_parse))

当我查看 df 时,它显示这样的字符串

[                0                1
0 Previous Close 167.37
1 Open 169.79
2 Bid 157.23 x 300
3 Ask 157.29 x 500
4 Day's Range 169.00 - 173.09
5 52 Week Range 134.84 - 180.10
6 Volume 51124085
7 Avg. Volume 33251246]

我想要做的是将每个股票的表存储到数据框中,然后将它们合并在一起,如下所示。或者我想如果有办法的话,我可以把它变成字典,这样我就可以更容易地使用它的变量。

                  APPL    AMAZN    INTC     MSFT    SNAP
Previous Close
Open
Bid
Ask
Day's Range
Volume
Avg. Volume

目前,我面临两个问题:

  1. 使用 pd.read_html(str(table)) 后如何将表格转换为数据框和/或字典
  2. 如何单独存储每个股票的结果最终合并 他们在一起?我知道如何使用for循环来一一读取它们, 但我似乎不知道如何以这种方式存储它们。

最佳答案

我会这样做:

import pandas as pd
from bs4 import BeautifulSoup
import requests

def fetch(t):
url = f'http://finance.yahoo.com/quote/{t}?p={t}'
res = requests.get(url)
soup = (BeautifulSoup(res.content, 'lxml'))
table = soup.find_all('table')[0]
labels, data = pd.read_html(str(table))[0].values.T
# ^
# What you were missing
# pd.read_html returned a list of 1 dataframe
return pd.Series(data, labels, name=t)

tickers = ["AAPL","AMZN", "INTC", "MSFT", "SNAP"]
df = pd.concat(map(fetch, tickers), axis=1)

AAPL AMZN INTC MSFT SNAP
Previous Close 167.37 1451.05 45.38 90.81 19.56
Open 169.79 1466.89 45.88 91.21 19.66
Bid 157.23 x 300 1,373.50 x 100 43.29 x 100 86.19 x 100 19.01 x 300
Ask 157.29 x 500 1,376.00 x 200 43.43 x 800 86.30 x 500 19.04 x 500
Day's Range 169.00 - 173.09 1,436.84 - 1,468.94 44.95 - 45.99 90.62 - 92.72 19.58 - 20.57
52 Week Range 134.84 - 180.10 833.50 - 1,498.00 33.23 - 50.85 63.62 - 96.07 11.28 - 29.44
Volume 51129225 5650685 23536349 27823161 40733751
Avg. Volume 33251246 4689059 34001746 28064627 25027667

关于python - 网络抓取数据并使用 pandas read_html 将其转换为数据框并将数据集合并在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48818431/

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