Récemment, j'ai décidé que j'aimerais réaliser un projet rapide de web scraping et d'analyse de données. Parce que mon cerveau aime proposer de grandes idées qui prendraient beaucoup de temps, j'ai décidé de me mettre au défi de trouver quelque chose de simple qui pourrait être réalisé de manière viable en quelques heures.
Voici ce que j'ai trouvé :
Comme mon diplôme de premier cycle était à l'origine en langues étrangères (français et espagnol), j'ai pensé que ce serait amusant de récupérer sur le Web certaines données liées aux langues. Je voulais utiliser la bibliothèque BeautifulSoup, qui peut analyser du HTML statique mais n'est pas capable de gérer des pages Web dynamiques qui ont besoin d'événements onclick pour révéler l'ensemble de données (c'est-à-dire en cliquant sur la page de données suivante si la page est paginée).
J'ai opté pour cette page Wikipédia des langues les plus parlées.
Je voulais faire ce qui suit :
- Obtenir le code HTML de la page et le sortir dans un fichier .txt
- Utilisez Beautiful Soup pour analyser le fichier HTML et extraire les données du tableau
- Écrivez le tableau dans un fichier .csv
- Proposez 10 questions auxquelles je voulais répondre pour cet ensemble de données en utilisant l'analyse des données
- Répondez à ces questions en utilisant des pandas et un carnet Jupyter
J'ai décidé de diviser le projet en ces étapes pour séparer les préoccupations, mais je voulais aussi éviter de faire plusieurs requêtes inutiles pour obtenir le code HTML de Wikipédia en réexécutant le script. Enregistrer le fichier HTML, puis travailler avec lui dans un script séparé signifie que vous n'avez pas besoin de demander à nouveau les données, car vous les avez déjà.
Lien du projet
Le lien vers mon dépôt github pour ce projet est : https://github.com/gabrielrowan/Foreign-Languages-Analysis
Obtenir le HTML
Tout d’abord, j’ai récupéré et affiché le code HTML. Après avoir travaillé avec C# et C, c'est toujours une nouveauté pour moi de voir à quel point le code Python est court et concis ?
url = 'https://en.wikipedia.org/wiki/List_of_languages_by_number_of_native_speakers' response = requests.get(url) html = response.text with open("languages_html.txt", "w", encoding="utf-8") as file: file.write(html)
Analyser le HTML
Pour analyser le html avec Beautiful soup et sélectionner la table qui m'intéressait, j'ai fait :
with open("languages_html.txt", "r", encoding="utf-8") as file: soup = BeautifulSoup(file, 'html.parser') # get table top_languages_table = soup.select_one('.wikitable.sortable.static-row-numbers')
Ensuite, j'ai obtenu le texte d'en-tête du tableau pour obtenir les noms de colonnes de mon dataframe pandas :
# get column names columns = top_languages_table.find_all("th") column_titles = [column.text.strip() for column in columns]
Après cela, j'ai créé le dataframe, défini les noms des colonnes, récupéré chaque ligne du tableau et écrit chaque ligne dans le dataframe :
# get table rows table_data = top_languages_table.find_all("tr") # define dataframe df = pd.DataFrame(columns=column_titles) # get table data for row in table_data[1:]: row_data = row.find_all('td') row_data_txt = [row.text.strip() for row in row_data] print(row_data_txt) df.loc[len(df)] = row_data_txt
Remarque : sans utiliser strip(), il y avait n caractères dans le texte qui n'étaient pas nécessaires.
Enfin, j'ai écrit le dataframe dans un .csv.
Analyser les données
À l'avance, je me posais ces questions auxquelles je voulais répondre à partir des données :
- Quel est le nombre total de locuteurs natifs dans toutes les langues de l'ensemble de données ?
- Combien de types différents de familles linguistiques existe-t-il ?
- Quel est le nombre total de locuteurs natifs par famille linguistique ?
- Quelles sont les 3 familles de langues les plus courantes ?
- Créez un diagramme circulaire montrant les 3 familles de langues les plus courantes
- Quelle est la famille de langues - paire de branches la plus courante ?
- Quelles sont les langues sino-tibétaines dans le tableau ?
- Afficher un graphique à barres des locuteurs natifs de toutes les langues romanes et germaniques
- Quel pourcentage du total de locuteurs natifs est représenté par les 5 principales langues ?
- Quelle branche compte le plus de locuteurs natifs, et laquelle en compte le moins ?
Les résultats
Bien que je n'entrerai pas dans le code pour répondre à toutes ces questions, j'aborderai les 2 celles qui impliquaient des graphiques.
Afficher un graphique à barres des locuteurs natifs de toutes les langues romanes et germaniques
Tout d'abord, j'ai créé un dataframe qui n'incluait que les lignes où le nom de la branche était « Romance » ou « Germanic »
url = 'https://en.wikipedia.org/wiki/List_of_languages_by_number_of_native_speakers' response = requests.get(url) html = response.text with open("languages_html.txt", "w", encoding="utf-8") as file: file.write(html)
Ensuite j'ai précisé l'axe x, l'axe y et la couleur des barres que je voulais pour le graphique :
with open("languages_html.txt", "r", encoding="utf-8") as file: soup = BeautifulSoup(file, 'html.parser') # get table top_languages_table = soup.select_one('.wikitable.sortable.static-row-numbers')
Cela a créé :
Créez un diagramme circulaire montrant les 3 familles de langues les plus courantes
Pour créer le diagramme circulaire, j'ai récupéré les 3 familles de langues les plus courantes et les ai placées dans un dataframe.
Ce groupe de codes obtient la somme totale des locuteurs natifs par famille de langues, les trie par ordre décroissant et extrait les 3 premières entrées.
# get column names columns = top_languages_table.find_all("th") column_titles = [column.text.strip() for column in columns]
Ensuite, je place les données dans un graphique à secteurs, en spécifiant l'axe Y des « locuteurs natifs » et une légende, qui crée des étiquettes à code couleur pour chaque famille de langues affichée dans le graphique.
# get table rows table_data = top_languages_table.find_all("tr") # define dataframe df = pd.DataFrame(columns=column_titles) # get table data for row in table_data[1:]: row_data = row.find_all('td') row_data_txt = [row.text.strip() for row in row_data] print(row_data_txt) df.loc[len(df)] = row_data_txt
Le code et les réponses pour le reste des questions peuvent être trouvés ici. J'ai utilisé le markdown dans le cahier pour écrire les questions et leurs réponses.
La prochaine fois:
Pour ma prochaine itération d'un projet de web scraping et d'analyse de données, j'aimerais compliquer les choses avec :
- Web scraping d'une page dynamique où plus de données sont révélées en cliquant/défilement
- Analyser un ensemble de données beaucoup plus volumineux, qui nécessite potentiellement un travail de nettoyage des données avant l'analyse
Réflexions finales
Même si cela a été rapide, j'ai aimé réaliser ce projet. Cela m'a rappelé à quel point des projets courts et gérables peuvent être utiles pour attirer les représentants du cabinet ? De plus, extraire des données d'Internet et créer des graphiques à partir de celles-ci, même avec un petit ensemble de données, est-il amusant ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

ArraySinpython, en particulier Vianumpy, arecrucialinsciciencomputingfortheirefficiency andversatity.1) ils sont les opérations de data-analyse et la machineauning.2)

Vous pouvez gérer différentes versions Python en utilisant Pyenv, Venv et Anaconda. 1) Utilisez PYENV pour gérer plusieurs versions Python: installer PYENV, définir les versions globales et locales. 2) Utilisez VENV pour créer un environnement virtuel pour isoler les dépendances du projet. 3) Utilisez Anaconda pour gérer les versions Python dans votre projet de science des données. 4) Gardez le Système Python pour les tâches au niveau du système. Grâce à ces outils et stratégies, vous pouvez gérer efficacement différentes versions de Python pour assurer le bon fonctionnement du projet.

NumpyArrayShaveSeveralAdvantages OverStandardPyThonarRays: 1) TheaReMuchfasterDuetoc-bases Implementation, 2) Ils sont économisés par le therdémor

L'impact de l'homogénéité des tableaux sur les performances est double: 1) L'homogénéité permet au compilateur d'optimiser l'accès à la mémoire et d'améliorer les performances; 2) mais limite la diversité du type, ce qui peut conduire à l'inefficacité. En bref, le choix de la bonne structure de données est crucial.

Tocraftexecutablepythonscripts, suivant les autres proches: 1) addashebangline (#! / Usr / bin / leppython3) tomakethescriptexecutable.2) setpermisessionswithchmod xyour_script.py.3) organisationwithacleardocstringanduseifname == "__ __" Main __ ".

NumpyArraysarebetterFornumericalOperations andMulti-dimensionaldata, tandis que la réalisation de la réalisation

NumpyArraysareBetterForheAVYVumericalComputing, tandis que la réalisation de points contraints de réalisation.1) NumpyArraySoFerversATACTORATIONS ajusté pour les données

CTYPESALLOWSCREATINGAndMANIPulationc-styLearRaySInpython.1) UsectypeStOinterfaceWithClibraryForPerformance.2) Createc-stylearRaysFornumericalComptations.3) PassArrayStocfunction


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Dreamweaver Mac
Outils de développement Web visuel

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Dreamweaver CS6
Outils de développement Web visuel
