[PYTHON] Comment récupérer des données de courses de chevaux à l'aide de pandas read_html

Objectif

Prédisez les courses de chevaux avec l'apprentissage automatique et visez un taux de récupération de 100%.

Que faire cette fois

Récupération de tous les résultats de la course 2019 sur netkeiba.com Les données avec une balise table peuvent être récupérées en une seule ligne en utilisant pandas read_html, ce qui est pratique.

pd.read_html("https://db.netkeiba.com/race/201902010101")[0]

スクリーンショット 2020-07-04 22.19.07.png

Code source

Puisque race_id est assigné à chaque course sur netkeiba.com, si vous entrez une liste de race_id, créez une fonction qui gratte chaque résultat de course ensemble et le renvoie dans un type de dictionnaire.

import pandas as pd
import time
from tqdm.notebook import tqdm

def scrape_race_results(race_id_list, pre_race_results={}):
    race_results = pre_race_results
    for race_id in tqdm(race_id_list):
        if race_id in race_results.keys():
            continue
        try:
            url = "https://db.netkeiba.com/race/" + race_id
            race_results[race_id] = pd.read_html(url)[0]
            time.sleep(1)
        except IndexError:
            continue
        except:
            break
    return race_results

Cette fois, je veux gratter les résultats de toutes les courses en 2019, donc je vais faire une liste de tous les race_ids en 2019.

race_id_list = []
for place in range(1, 11, 1):
    for kai in range(1, 6, 1):
        for day in range(1, 9, 1):
            for r in range(1, 13, 1):
                race_id = (
                    "2019"
                    + str(place).zfill(2)
                    + str(kai).zfill(2)
                    + str(day).zfill(2)
                    + str(r).zfill(2)
                )
                race_id_list.append(race_id)

Après le scraping, convertissez-le en type pandas DataFrame et enregistrez-le en tant que fichier pickle.

results = scrape_race_results(race_id_list)
for key in results:
    results[key].index = [key] * len(results[key])
results = pd.concat([results[key] for key in results], sort=False)
results.to_pickle('results.pickle')

Article suivant utilise BeautifulSoup pour récupérer des données détaillées telles que les dates des courses et la météo! De plus, nous expliquons en détail dans la vidéo! Analyse des données / apprentissage automatique à partir de la prédiction des courses de chevaux スクリーンショット 2020-07-04 22.03.00.png

Recommended Posts

Comment récupérer des données de courses de chevaux à l'aide de pandas read_html
Comment récupérer des données de courses de chevaux avec Beautiful Soup
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
Comment obtenir des données d'article à l'aide de l'API Qiita
Comment rechercher des données HTML à l'aide de Beautiful Soup
Grattage 2 Comment gratter
Comment utiliser Pandas 2
Comment récupérer des données d'image de Flickr avec Python
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
[Python] Comment gérer l'erreur de lecture pandas read_html
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Comment utiliser Pandas Rolling
Flux de raclage des données de courses de chevaux
Comment gérer les trames de données
Analyse de données à l'aide de pandas python
Comment ajouter de nouvelles données (lignes droites et tracés) à l'aide de matplotlib
Comment obtenir un aperçu de vos données dans Pandas
Compagnon de science des données en python, comment spécifier des éléments dans les pandas
Comment installer Python à l'aide d'Anaconda
Comment coller un fichier CSV dans un fichier Excel à l'aide de Pandas
[Python] Comment FFT des données mp3
Comment lire les données de la sous-région e-Stat
Méthode de visualisation de données utilisant matplotlib (+ pandas) (5)
Comment écrire sobrement avec des pandas
[Python] Comment utiliser la série Pandas
Récupération des données sur les courses de chevaux au Colaboratory
Comment gérer les données déséquilibrées
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique
Comment formater un tableau à l'aide de Pandas Appliquer, pivoter et permuter le niveau
Méthode de visualisation de données utilisant matplotlib (+ pandas) (3)
Comment augmenter les données avec PyTorch
Comment mettre à jour une source de données de classeur packagée Tableau à l'aide de Python
Méthode de visualisation de données utilisant matplotlib (+ pandas) (4)
Comment collecter des données d'apprentissage automatique
Comment diviser et traiter une trame de données à l'aide de la fonction groupby
J'ai appris le grattage à l'aide de sélénium pour créer un modèle de prédiction de courses de chevaux.
Comment tracer les données de lumière visible d'une galaxie à l'aide de la base de données OpenNGC en python
Comment collecter des données Twitter sans programmation
[Pandas] Qu'est-ce que set_option [Comment utiliser]
Comment dessiner un graphique avec Matplotlib
Comment configurer SVM à l'aide d'Optuna
Comment installer un package à l'aide d'un référentiel
Convertir les données de la grille en données contenant des lignes (?) À l'aide de pandas
Comment configurer XG Boost à l'aide d'Optuna
Comment réattribuer un index dans pandas dataframe
Essayez de convertir en données ordonnées avec les pandas
Comment utiliser "deque" pour les données Python
Comment télécharger des vidéos YouTube à l'aide de pytube3
Comment gérer les données de séries chronologiques (mise en œuvre)
Comment lire des fichiers CSV avec Pandas
Comment lire les données de problème avec Paiza
Vectorisation du pedigree des courses de chevaux à l'aide de fastText
Comment utiliser les pandas Timestamp et date_range
La première étape de l'analyse du journal (comment formater et mettre les données du journal dans Pandas)
Comment afficher la carte à l'aide de l'API Google Map (Android)
Comment créer des exemples de données CSV avec hypothèse
Essayez d'utiliser django-import-export pour ajouter des données csv à django