2017-03-02 4 views
3

J'essaye d'utiliser seulement la deuxième trame de données sur cette URL, mais je ne peux pas comprendre comment spécifier pour obtenir seulement la trame de données. Il imprime les données du graphique et de la table, mais tout ce que je veux imprimer c'est la table.Comment puis-je sélectionner la seconde image uniquement à partir d'une page Web avec deux données, en utilisant des pandas en python?

`import pandas as pd 
import urllib.request 

page = pd.read_html('https://www.google.com/finance/historical?q=a&startdate=Jan%201%2C%202000&enddate=Feb%2028%2C%202017&num=200&ei=_nm3WKGHCIf7jAG74ar4Cw&start=200', header=0) 

for df in page: 
    print(df)` 
+1

Si vous voulez simplement le prix des actions, vous pouvez simplement utiliser [ 'pandas géants datareader'] (https://pandas-datareader.readthedocs.io/ en/latest /), il peut vous permettre d'utiliser la finance 'yahoo' ou' google' comme source de données. De plus, il renvoie la structure de données par défaut, de sorte qu'il est beaucoup plus facile de travailler avec. – SSC

+0

D'accord, cela vient directement en tant que df et évite le travail supplémentaire qui suit sûrement l'obtention de la liste des trames de données qui en résulterait. –

Répondre

4

Le tableau que vous recherchez a un attribut de classe gf-table, passer à pd.read_html, il ne lit la deuxième table:

page = pd.read_html('https://www.google.com/finance/historical?q=a&startdate=Jan%201%2C%202000&enddate=Feb%2028%2C%202017&num=200&ei=_nm3WKGHCIf7jAG74ar4Cw&start=200', 
        attrs = {'class': 'gf-table'}, 
        header=0) 
​ 
page 

#    Date Open High Low Close Volume 
#0 May 12, 2016 42.59 42.94 42.42 42.73 2224506 
#1 May 11, 2016 42.19 43.20 42.12 42.46 3325515 
#2 May 10, 2016 41.50 42.00 41.35 42.00 2094305 
#3  May 9, 2016 41.51 41.78 41.29 41.33 1741539 
#4  May 6, 2016 40.86 41.62 40.72 41.43 1403476 
#5  May 5, 2016 40.64 41.03 40.51 40.96 1083956 
#... 
0

aide-lecteur de données serait bien meilleure façon travailler avec google de données financières de Yahoo. Cela dit @Psidom fourni une réponse correcte.

Voici un exemple de la manière dont vous obtiendrez directement des données de stock Agilent en tant que données directement au lieu d'une liste de données en utilisant le lecteur de données.

import pandas as pd 
import pandas_datareader.data as web 
import datetime 

start = datetime.datetime(2000, 1, 1) 
end = datetime.datetime(2017, 2, 27) 

data = web.DataReader('A', 'google', start, end) 

data.head() 

Ce serait directement retourner Pandas dataframe vous permettant directement de faire des choses comme.

data.ix['2010-01-04'] 

Pour obtenir des données à partir des données spefic par exemple