[PYTHON] Essayez d'agréger les données de musique doujin avec des pandas

Bonjour. J'écris la première ébauche en fumant Shisha. C'est étouffé. Cela fait environ 3 mois que j'ai posté sur Qiita. ça fait longtemps.

Synopsis

Chata Le savez-vous? Je suis une chanteuse décontractée, mais depuis que je chantais "Dango Big Family", vous l'avez peut-être entendu même si vous ne connaissiez pas le nom. Une connaissance a créé une base de données musicale pour M. Chata, et j'ai pu obtenir les données, donc j'aimerais l'analyser à l'aide de pandas.

Que faire cette fois

Ce n'est pas une analyse, mais les CD contenant les chansons de M. Chata sont classés par date de sortie. Je vais essayer deux méthodes, une méthode simple utilisant le * count plot * de Seaborn et une méthode légèrement détour qui agrège par année et par mois, puis produit avec * bar plot *.

À propos de l'ensemble de données

Utilise des données organisées par CD. Il se compose de "Nom du CD", "Nom du cercle 1", "Nom du cercle 2", "Date de sortie", "Indicateur d'étiquette principale", "Remarques" et est enregistré au format csv.

environnement

Ubuntu 16.04 Python 3.5.2 :: Anaconda custom (64-bit)

Commençons.

#coding:utf-8

import csv
import pandas as pd
import seaborn as sns

if __name__ == "__main__":

    #Lire CSV
    dfCD = pd.read_csv("ChataData_CD.csv")

    #Date de sortie
    releaseYear = []
    #Obtenez la date de sortie en tournant le cadre de données de stockage CSV
    # i:Nom de la ligne, row:series(Valeur de ligne)
    for i,row in dfCD.iterrows():
        ymd = str(row['ReleaseYmd'])
        #Découpez la date de sortie pour en faire la date de sortie
        releaseYear.append(ymd[0:4])

    #Mettre la liste des dates de sortie dans le bloc de données
    chataCD = pd.DataFrame({'year':releaseYear})

    #Définir la police japonaise dans seaborn
    sns.set(font='TakaoPGothic')

*** iterrows *** tourne la trame de données contenant les données originales pour obtenir la date de sortie du CD. *** iterrows *** est une méthode qui transforme un tuple composé de ** nom de ligne ** et ** valeur de ligne **. Est-ce une image de rotation verticale du bloc de données? (Référence: http://sinhrks.hatenablog.com/entry/2015/06/18/221747) Puisqu'il est enregistré comme date de sortie dans l'ensemble de données, découpez-le pour qu'il devienne "aaaamm" et mettez-le dans la liste.

Utilisez pd.DataFrame ({** nom du libellé **: *** Series ***}) pour mettre une liste des dates de sortie dans le bloc de données. La série est une liste unidimensionnelle. Au début, j'ai essayé d'ajouter la date de sortie (chaîne de caractères) tout en tournant les données d'origine et j'ai échoué.

Définissez la police japonaise dans Seaborn et vous êtes prêt à partir. Ici, TakaoPGothic est spécifié. Je me suis référé à ce qui suit pour spécifier les polices japonaises. [Seaborn] Afficher le japonais (changer la police)

Visualisons-le en utilisant Seaborn. Commençons par une méthode simple.

    fig = sns.countplot(x='year',data=chataCD,palette='Greens_r').get_figure()
    fig.suptitle('Changements dans le nombre de sorties CD des chansons de Chata-san(2000-2016)')
    sns.plt.savefig('countByYear_simple.png')

*** countplot *** est une méthode qui compte les données de l'axe X ou Y. C'est facile car il suffit de passer une trame de données contenant la date de sortie de chaque CD. [Un superbe dessin graphique avec python -seaborn facilite l'analyse et la visualisation des données Partie 2] (http://qiita.com/hik0107/items/7233ca334b2a5e1ca924) *** palette *** spécifie la palette de couleurs. Comment choisir la palette de couleurs Seaborn a été utile. Ce qui suit est le graphique de sortie. countByYear_simple.png

Vient ensuite une méthode légèrement détour. Cela prendra plus de temps, mais il s'agit plus probablement d'une étude sur les pandas.

    #Trouvez le nombre de sorties par année et par mois
    yrCount = chataCD['year'].value_counts(ascending=True).sort_index()
    year = []
    count = []
    for row in yrCount.iteritems():
        year.append(row[0])
        count.append(row[1])
    dfCount = pd.DataFrame({'year':year,'count':count})

    barplot = sns.barplot(x='year',y='count',data=dfCount,palette='Greens_r').get_figure()
    barplot.suptitle('Changements dans le nombre de sorties CD des chansons de Chata-san(2000-2016)')
    sns.plt.savefig('countByYear.png')

Pour ceux qui font un détour, nous allons créer une base de données qui contient deux types de données, la date de sortie et le nombre de versions. Tout d'abord, utilisez ** DataFrame.value_counts ** pour compter le nombre d'éléments.

** DataFrame.value_counts ** renvoie * Series *. Dans ce cas, * index * est l'année et le mois, et * values * est le nombre de feuilles. Faites une liste de chaque date de sortie et nombre de versions, et entrez la valeur là-bas. *** iteritems *** transforme un taple composé de * index * et * values *, donc ajoutez * row [0] * à la date de sortie et * row [1] * au nombre de versions.

Après avoir créé un bloc de données à partir de la liste des dates de sortie et du nombre de versions, il est visualisé avec Seaborn. Utilisez *** barplot *** pour dessiner un soi-disant graphique à barres. countByYear.png

L'histoire tourne mal

Lorsque j'importe et lance Seaborn, j'obtiens l'avertissement suivant, mais j'ai du mal à comprendre la cause ...

/.pyenv/versions/anaconda3-4.1.0/lib/python3.5/site-packages/PIL/Image.py:85: RuntimeWarning: The _imaging extension was built for another  version of Pillow or PIL
  warnings.warn(str(v), RuntimeWarning)

Je vous serais reconnaissant si vous pouviez me dire la cause dans les commentaires.

Recommended Posts

Essayez d'agréger les données de musique doujin avec des pandas
Essayez de convertir en données ordonnées avec les pandas
Essayez rapidement de visualiser votre ensemble de données avec des pandas
Convertir 202003 en 2020-03 avec les pandas
Visualisation des données avec les pandas
Manipulation des données avec les Pandas!
Mélangez les données avec les pandas
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
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Essayez de défier le sol par récursif
Conseils de traitement des données avec Pandas
Ingéniosité pour gérer les données avec Pandas de manière à économiser la mémoire
Essayez d'extraire la table de données d'Azure SQL Server avec pyodbc
Essayez de traiter les données Titanic avec la bibliothèque de prétraitement DataLiner (Append)
Essayez d'acquérir des données lors de la redirection de port vers RDS avec anaconda.
Essayez de traiter les données Titanic avec la bibliothèque de prétraitement DataLiner (encodage)
Essayez de traiter les données Titanic avec la bibliothèque de prétraitement DataLiner (conversion)
Essayez d'extraire les caractéristiques des données de capteur avec CNN
Essayez d'exploiter Facebook avec Python
Comment gérer les données déséquilibrées
Essayez de profiler avec ONNX Runtime
Traçage de données polyvalent avec pandas + matplotlib
Essayez de mettre des données dans MongoDB
Comment augmenter les données avec PyTorch
Je veux faire ○○ avec les Pandas
Essayez de produire de l'audio avec M5 STACK
Essayez les données en parallèle avec TensorFlow distribué
[Analyse du cours de l'action] Apprenez les pandas avec la moyenne Nikkei (004: Changer les données lues en moyenne Nikkei)
[Pandas] J'ai essayé d'analyser les données de ventes avec Python [Pour les débutants]
Essayez de résoudre l'itinéraire le plus court avec les données sociales Python + NetworkX +
Essayez d'obtenir des métriques CloudWatch avec la source de données python re: dash
Essayez de traiter les données Titanic avec la bibliothèque de prétraitement DataLiner (Drop)
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Essayez de travailler avec des données binaires en Python
Convertir des données Excel en JSON avec python
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
Convertir les données de la grille en données contenant des lignes (?) À l'aide de pandas
Envoyer des données à l'API DRF avec Vue.js
Convertissez des données FX 1 minute en données 5 minutes avec Python
Essayez de prédire les fleurs de cerisier avec XG Boost
Premier YDK à essayer avec Cisco IOS-XE
Essayez de générer une image avec aliénation
Comment lire les données de problème avec Paiza
Gérez les structures de données 3D avec les pandas
Exemple de traitement efficace des données avec PANDAS
Meilleures pratiques pour manipuler les données avec les pandas
Extrayez la table de données d'Azure SQL Server avec pyodbc et essayez de la rendre numpy array / pandas dataframe
Convertissez l'historique d'utilisation de Suica mobile au format PDF au format pandas Data Frame avec tabula-py
Essayez de créer votre propre AWS-SDK avec bash
Comment créer des exemples de données CSV avec hypothèse
Essayez de résoudre le problème du fizzbuzz avec Keras
[Introduction au modèle SEIR] Essayez d'ajuster les données COVID-19 ♬
Essayez d'utiliser django-import-export pour ajouter des données csv à django
Convertissez les données avec la forme (nombre de données, 1) en (nombre de données,) avec numpy.
Lire les données csv Python avec Pandas ⇒ Graphique avec Matplotlib
J'ai essayé de sauvegarder les données avec discorde
Essayez de résoudre le diagramme homme-machine avec Python