J'ai essayé de créer un cadre de données pandas en grattant les informations de rappel d'aliments avec Python

J'ai décidé de garder une trace d'apprentissage de python, alors j'ai commencé Qitta. Puisque mon travail n'est pas une entreprise informatique, python est vraiment un passe-temps ... je veux dire, j'apprends avec intérêt.

En ce moment, je travaille sur l'hygiène alimentaire, alors je me demande si je peux faire quelque chose avec python, alors analysons les données sur les informations de rappel d'aliments! J'ai pensé.

Dans un premier temps, j'ai essayé de créer une base de données d'informations de rappel d'aliments par grattage. La source des données est un site appelé Recall Plus.

food_recall_info.py


from bs4 import BeautifulSoup
import requests
import re
import csv
import time
import pandas as pd

def recalls(url):
    res = requests.get(url)
    soup = BeautifulSoup(res.text, 'html.parser')
    recall_soup = soup.findAll("tr",{"class":{"return","info","apology"}})
    
    campany_list = []
    recall_list = []
    action_list = []
    recall_date = []

    for j in range(len(recall_soup)):
        #Obtenir le nom de l'entreprise
        campany_list.append(recall_soup[j].find("a", href=re.compile("/company/*")).get_text())
        #Rappeler les détails
        recall_list.append(recall_soup[j].find("a", {"style":"float:left"}).get_text())
        #Comment répondre
        keyword = re.compile(r'Récupération|Récupération&Rembourser|Récupération&Rembourser/Échange|Récupération&Échange|Rembourser|Échange|点検&Échange|Remarquer|Violation de la loi sur l'étiquetage des prix|excuses|Rembourser/Échange|Envoyer')
        action_list.append(re.search(keyword, str(recall_soup[j])).group())
        #Date d'accumulation
        recall_date.append(recall_soup[j].find("td", {"class":"day"}).get_text().replace("\n        ","20"))
    return campany_list,recall_list,action_list,recall_date

campany_lists = []
recall_lists = []
action_lists = []
recall_dates = []

for i in range(1,20):
    resl = recalls("https://www.recall-plus.jp/category/1?page={}".format(i))
    campany_lists.extend(resl[0])
    recall_lists.extend(resl[1])
    action_lists.extend(resl[2])
    recall_dates.extend(resl[3])
    
recall_df = pd.DataFrame({'Nom de la compagnie':campany_lists,'Rappeler les détails':recall_lists,'Correspondance':action_lists,'Date d'accumulation':recall_dates})

Résultat d'exécution


recall_df.head()
Nom de l'entreprise Détails du rappel Date de correspondance
0 Kobe Bussan Business Supermarket Je veux coller des morceaux de résine mélangés dans certains produits Récupération 2020/03/17
1 Marubun Marubun Soja domestique utilisé Yose tofu Date d'expiration mal étiqueté Collection 2020/03/17
2 Magasin Aeon Hitachi Omiya...Allergène pour tonteki assaisonné de longe de porc(Lait)Affichage manquant Apology 2020/03/18
3 Magasin Tsuruya Karuizawa Délicieux poisson blanc Allergène à la mouche Affichage des ingrédients du lait manquant Récupération 2020/03/16
4 Hatanaka Koiya Hatanaka Koiya Koi Allergène bouilli sucré "Blé" Récupération d'affichage manquante 2020/03/13

Apparemment, je pense qu'il pourrait être stocké dans la trame de données pandas.

Au début, j'ai pensé à chaque fois écrire le listing dans le bloc de données, mais j'ai abandonné car je ne savais pas comment le faire. Tout d'abord, j'ai fait une liste de chaque colonne, puis j'ai essayé de l'intégrer dans les pandas.

Je suis un amateur, donc je me suis souvenu d'une chose et j'ai ajouté une valeur avec append () au début. Cependant, il a été ajouté sous forme de liste et n'a pas pu être importé dans les pandas avec succès.

Après de nombreuses recherches, j'ai trouvé que je pouvais utiliser extend () pour n'ajouter que les valeurs de la liste.

J'ai appris une chose.

Maintenant que j'ai créé les données en toute sécurité, je voudrais analyser les données. Ce qui peut maintenant être analysé avec ces données est (1) Pourcentage de collectes et de retours lors de rappels ② Y a-t-il un moment où des rappels sont susceptibles de se produire?

N'est-ce pas. J'aimerais essayer diverses choses.

Recommended Posts

J'ai essayé de créer un cadre de données pandas en grattant les informations de rappel d'aliments avec Python
J'ai essayé de créer une liste de nombres premiers avec python
[Pandas] J'ai essayé d'analyser les données de ventes avec Python [Pour les débutants]
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
J'ai essayé l'analyse de données IRMf avec python (Introduction au décodage des informations cérébrales)
[Outlook] J'ai essayé de créer automatiquement un e-mail de rapport quotidien avec Python
J'ai essayé de gratter avec Python
J'ai essayé de gratter avec du python
Je veux donner un group_id à une trame de données pandas
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
J'ai essayé de créer automatiquement un rapport avec la chaîne de Markov
J'ai essayé webScraping avec python.
[Python] J'ai essayé de créer automatiquement un rapport quotidien de YWT avec la messagerie Outlook
J'ai créé une fonction pour récupérer les données de la colonne de base de données par colonne en utilisant sql avec sqlite3 de python [sqlite3, sql, pandas]
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer des taureaux et des vaches avec un programme shell
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer un linebot (implémentation)
J'ai essayé de créer un linebot (préparation)
[Bases de la science des données] J'ai essayé d'enregistrer de csv à mysql avec python
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'ai essayé de créer un plug-in avec HULFT IoT Edge Streaming [Development] (2/3)
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
J'ai essayé de créer le téléchargement CSV, le traitement des données, la fonction de téléchargement avec Django
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
J'ai essayé de créer un plug-in avec HULFT IoT Edge Streaming [Setup] (1/3)
J'ai essayé de créer un environnement de développement Mac Python avec pythonz + direnv
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de sortir LLVM IR avec Python
Étapes pour créer un bot Twitter avec Python
J'ai essayé d'automatiser la fabrication des sushis avec python
Transformez les données de vacances en une trame de données avec les pandas
Je veux écrire dans un fichier avec Python
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
J'ai essayé de créer un bouton pour Slack avec Raspeye + Tact Switch
J'ai essayé de créer un modèle avec l'exemple d'Amazon SageMaker Autopilot
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai essayé de démarrer avec le script python de blender_Partie 02