recherche
Maisondéveloppement back-endTutoriel PythonWeb scraping et analyse de données en langues étrangères

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.

Web scraping and analysing foreign languages data

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 :

  1. Quel est le nombre total de locuteurs natifs dans toutes les langues de l'ensemble de données ?
  2. Combien de types différents de familles linguistiques existe-t-il ?
  3. Quel est le nombre total de locuteurs natifs par famille linguistique ?
  4. Quelles sont les 3 familles de langues les plus courantes ?
  5. Créez un diagramme circulaire montrant les 3 familles de langues les plus courantes
  6. Quelle est la famille de langues - paire de branches la plus courante ?
  7. Quelles sont les langues sino-tibétaines dans le tableau ?
  8. Afficher un graphique à barres des locuteurs natifs de toutes les langues romanes et germaniques
  9. Quel pourcentage du total de locuteurs natifs est représenté par les 5 principales langues ?
  10. 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éé :

Web scraping and analysing foreign languages data

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 


Web scraping and analysing foreign languages data

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

Web scraping and analysing foreign languages data

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!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Comment les tableaux sont-ils utilisés dans l'informatique scientifique avec Python?Comment les tableaux sont-ils utilisés dans l'informatique scientifique avec Python?Apr 25, 2025 am 12:28 AM

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

Comment gérez-vous différentes versions Python sur le même système?Comment gérez-vous différentes versions Python sur le même système?Apr 25, 2025 am 12:24 AM

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.

Quels sont les avantages de l'utilisation de tableaux Numpy sur des tableaux Python standard?Quels sont les avantages de l'utilisation de tableaux Numpy sur des tableaux Python standard?Apr 25, 2025 am 12:21 AM

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

Comment la nature homogène des tableaux affecte-t-elle les performances?Comment la nature homogène des tableaux affecte-t-elle les performances?Apr 25, 2025 am 12:13 AM

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.

Quelles sont les meilleures pratiques pour écrire des scripts Python exécutables?Quelles sont les meilleures pratiques pour écrire des scripts Python exécutables?Apr 25, 2025 am 12:11 AM

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

En quoi les tableaux Numpy diffèrent-ils des tableaux créés à l'aide du module de tableau?En quoi les tableaux Numpy diffèrent-ils des tableaux créés à l'aide du module de tableau?Apr 24, 2025 pm 03:53 PM

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

Comment l'utilisation des tableaux Numpy se compare-t-il à l'utilisation des tableaux de modules de tableau dans Python?Comment l'utilisation des tableaux Numpy se compare-t-il à l'utilisation des tableaux de modules de tableau dans Python?Apr 24, 2025 pm 03:49 PM

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

Comment le module CTYPES est-il lié aux tableaux dans Python?Comment le module CTYPES est-il lié aux tableaux dans Python?Apr 24, 2025 pm 03:45 PM

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

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

SublimeText3 version Mac

SublimeText3 version Mac

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

Navigateur d'examen sécurisé

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

Dreamweaver CS6

Outils de développement Web visuel