[Python] De l'analyse morphologique des données CSV à la sortie CSV et à l'affichage graphique [GiNZA]

Collectez des données CSV

Tout d'abord, récupérez les données CSV. Je me demandais quelles données obtenir, Je vais gratter et récupérer les paroles de mon Yorushika préféré.

Tout d'abord, installez les modules nécessaires au grattage

pip install requests
pip install bs4
pip install lxml
pip install pandas

Grattage!

Je l'ai mentionné ici. 【https://qiita.com/yuuuusuke1997/items/122ca7597c909e73aad5#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB】

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

#Créer une table pour contenir les données récupérées
list_df = pd.DataFrame(columns=['Paroles'])

for page in range(10):
    try:
        #Adresse du haut de la page de la chanson
        base_url = 'https://www.uta-net.com'

        #Page de liste des paroles
        artist = "22653"
        url = 'https://www.uta-net.com/artist/'+artist+'/0/' + str(page) + '/'
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'lxml')
        links = soup.find_all('td', class_='side td1')
        for link in links:
            a = base_url + (link.a.get('href'))

            #Page de détail des paroles
            response = requests.get(a)
            soup = BeautifulSoup(response.text, 'lxml')
            song_lyrics = soup.find('div', itemprop='lyrics')
            song_lyric = song_lyrics.text
            song_lyric = song_lyric.replace('\n','')
            #Attendez 1 seconde pour ne pas charger le serveur
            time.sleep(1)

            #Ajouter les paroles acquises au tableau
            tmp_se = pd.DataFrame([song_lyric], index=list_df.columns).T
            list_df = list_df.append(tmp_se)
    except:
        print(page)
        import traceback
        traceback.print_exc()

print(list_df)

#csv enregistrer
list_df.to_csv('list.csv', mode = 'a', encoding='utf_8_sig')

Installation requise pour l'analyse morphologique

Installez d'abord ce dont vous avez besoin

pip install "https://github.com/megagonlabs/ginza/releases/download/v1.0.2/ja_ginza_nopn-1.0.2.tgz"
pip install matplotlib
pip install wordcloud

Japaneseisation de matplotlib

Reportez-vous à ceci [https://qiita.com/osakasho/items/7408d031ca0b2192422f]

Analyse et affichage graphique!

# coding: utf-8
import spacy
nlp = spacy.load('ja_ginza_nopn')
import pandas as pd
import matplotlib.pyplot as plt
import collections
from wordcloud import WordCloud

def ginza(word):
    doc = nlp(word)
    #Résultats du sondage
    total_ls = []
    Noun_ls = [chunk.text for chunk in doc.noun_chunks]
    Verm_ls = [token.lemma_ for token in doc if token.pos_ == "VERB"]
    for n in Noun_ls:
        total_ls.append(n)
    for v in Verm_ls:
        total_ls.append(v)
    return total_ls, Noun_ls, Verm_ls


"""---------------CSV lu et préréglé--------------"""
csv_read_path = "list.csv"
df = pd.read_csv(csv_read_path)

target_categories = ["Paroles"]
black_list = ["test"]
"""-------------------------------------------------------------"""



"""---------------Traitement morphologique------------------------"""
for target in target_categories:
    total_voc = []#Préparez une boîte pour mettre des lettres
    for data in df[target]:
        try:
            word_ls, noun_ls, verm_ls = ginza(data)
        except:#S'il ne peut pas être décomposé, utilisez un mot.
            word_ls = [data]
        for w in word_ls:
            if not w in black_list:#Vérifiez si le mot est sur la liste noire.
                total_voc.append(w)

    print("Le nombre de mots est", len(total_voc), "était.")

    #Classement des mots les plus fréquents
    c = collections.Counter(total_voc)

    #Écrire au CSV
    c_data = (c.most_common())
    csvdf = pd.DataFrame(c_data)
    filename = target + ".csv"
    csvdf.to_csv(filename, encoding='utf_8_sig')
    print("----------------------------")

    #Faire un graphique pour le moment
    #Spécifiez des polices partielles supplémentaires.
    plt.rcParams["font.family"] = "IPAexGothic"
    plt.title(target)
    plt.grid(True)
    graph_x_list = []
    graph_y_list = []
    top_num = 0
    for key, value in c.most_common():
        graph_x_list.append(key)
        graph_y_list.append(value)
        if top_num >= 10:
            break
        top_num += 1
    try:
        plt.bar(graph_x_list, graph_y_list)
        #Affichage du graphique
        plt.show()
    except:
        print(target, "Impossible de dessiner les données.")

    #Dessiner dans WordCloud
    font = 'C:/Windows/Fonts/YuGothM.ttc'
    wordcloud = WordCloud(background_color="white", width=1000, height=600, font_path=font)

    wordcloud.generate(" ".join(wordcloud_ls))
    wordcloud.to_file(target+'.png')

"""-------------------------------------------------------------"""

Résultats du graphique

Résultats du graphique à barres

image.png

Résultats de Word Cloud

image.png

Tu comprends vraiment

Je vous remercie pour votre travail acharné.

Recommended Posts

[Python] De l'analyse morphologique des données CSV à la sortie CSV et à l'affichage graphique [GiNZA]
Porté du langage R de "Sazae-san's Janken Data Analysis" vers Python
Python> Numéros de sortie de 1 à 100, 501 à 600> Pour csv
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Analyse des données: application facile des statistiques descriptives et des statistiques d'estimation aux données CSV en Python
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
[Python] Flux du scraping Web à l'analyse des données
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
Traitement pleine largeur et demi-largeur des données CSV en Python
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
[Introduction à Python] Combinaison des données Nikkei Average et NY Dow CSV
Météorologie x Python ~ De l'acquisition de données météorologiques à l'analyse spectrale ~
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
Sortie vers un fichier csv avec Python
Livres et sources recommandés de programmation d'analyse de données (Python ou R)
Comment éviter la duplication des données lors de la saisie de Python vers SQLite.
Introduction à l'analyse de données par Python P17-P26 [ch02 1.usa.gov données de bit.ly]
Pratique de l'analyse de données par Python et pandas (Tokyo COVID-19 data edition)
[Introduction to Data Scientists] Bases de Python ♬ Branchements conditionnels et boucles
[Introduction aux Data Scientists] Bases de Python ♬ Fonctions et fonctions anonymes, etc.
[Python] Comment spécifier la position d'affichage de la fenêtre et la taille de matplotlib
De Python à l'utilisation de MeCab (et CaboCha)
Entrée / sortie de données en Python (CSV, JSON)
De la préparation à l'analyse morphologique avec python en utilisant polyglotte au marquage des mots partiels
[Bases de la science des données] J'ai essayé d'enregistrer de csv à mysql avec python
Sortie CSV des données d'impulsion avec Raspberry Pi (vérifier l'entrée analogique avec python)
Transférer des données en virgule flottante de Python vers JavaScript sans perte de chiffres
Portage et modification du solveur de doublets de python2 vers python3.
Lire Python csv et exporter vers txt
Représentez facilement des données graphiques dans le shell et Python
Affichage graphique des données AIX et Linux nmon sans utiliser MS Excel
De la construction de ré-environnement de Python au dessin graphique (sur le code Visual Studio)
Compressez les données python et écrivez sur sqlite
[Introduction au Data Scientist] Bases de Python ♬
Je souhaite générer un diagramme de chemin d'analyse de structure distribuée co-distribuée (SEM) en reliant Python et R.
Même dans le processus de conversion de CSV en délimiteur d'espace, essayez sérieusement de séparer les entrées / sorties et les règles
Analyse des données en Python Résumé des sources que les débutants devraient d'abord consulter
(Notes diverses) Modèle de mise à jour des données à partir de l'acquisition / traitement des données CSV par Python vers Excel
Résumé de la lecture des données numériques avec python [CSV, NetCDF, Fortran binary]
Un beau dessin graphique avec Python -seaborn facilite l'analyse et la visualisation des données Partie 1
Utilisez libsixel pour générer Sixel en Python et générer le graphe Matplotlib vers le terminal.
Un beau dessin graphique avec Python -seaborn facilite l'analyse et la visualisation des données Partie 2
Organiser les outils Python pour accélérer le mouvement initial des compétitions d'analyse de données
Du fichier Excel à l'exe et sortie de l'outil qui crache le CSV
Sortie CSV de la recherche Google avec [Python]! 【Facile】
Grattage de la nourriture avec python et sortie en CSV
[Kaggle] De la lecture des données au prétraitement et au codage
Lire les données csv Python avec Pandas ⇒ Graphique avec Matplotlib
[Python] Conversion de DICOM en PNG ou CSV
Lire JSON avec Python et générer un CSV
Recevoir et afficher les données de formulaire HTML en Python
Du dessin de fichier au graphique en Python. Élémentaire élémentaire
Récupération des données de MacNote3 et migration vers Write
Comparaison approfondie de trois bibliothèques d'analyse morphologique Python
Sortie CSV des données d'impulsion avec Raspberry Pi (sortie CSV)
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Liste de code Python à déplacer et à mémoriser
J'ai essayé l'analyse morphologique et la vectorisation de mots
Environnement enregistré pour l'analyse des données avec Python