[PYTHON] Versuchen Sie, Doujin-Musikdaten mit Pandas zu aggregieren

Hallo. Ich schreibe den ersten Entwurf, während ich Shisha rauche. Es ist gedämpft. Es ist ungefähr 3 Monate her, seit ich bei Qiita gepostet habe. lange nicht gesehen.

Zusammenfassung

Chata Weißt du? Ich bin ein entspannter Sänger, aber seit ich "Dango Big Family" gesungen habe, haben Sie es vielleicht gehört, auch wenn Sie den Namen nicht kannten. Ein Bekannter hat eine Musikdatenbank für Herrn Chata erstellt, und ich konnte die Daten abrufen, daher möchte ich sie mit Pandas analysieren.

Was ist diesmal zu tun?

Es ist keine Analyse, aber die CDs mit Mr. Chatas Songs sind nach Erscheinungsdatum tabellarisch aufgeführt. Ich werde zwei Methoden ausprobieren, eine einfache Methode mit Seaborns * Count Plot * und eine leicht umlaufende Methode, die nach Jahr und Monat aggregiert und dann mit * Bar Plot * ausgegeben wird.

Über den Datensatz

Verwendet von CD organisierte Daten. Es besteht aus "CD-Name", "Kreisname 1", "Kreisname 2", "Veröffentlichungsdatum", "Hauptetikett", "Bemerkungen" und wird im CSV-Format gespeichert.

Umgebung

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

Lass uns anfangen.

#coding:utf-8

import csv
import pandas as pd
import seaborn as sns

if __name__ == "__main__":

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

    #Veröffentlichungsdatum
    releaseYear = []
    #Holen Sie sich das Veröffentlichungsdatum, indem Sie den CSV-Speicherdatenrahmen drehen
    # i:Zeilenname, row:series(Zeilenwert)
    for i,row in dfCD.iterrows():
        ymd = str(row['ReleaseYmd'])
        #Schneiden Sie das Veröffentlichungsdatum, um es zum Veröffentlichungsdatum zu machen
        releaseYear.append(ymd[0:4])

    #Fügen Sie die Liste der Veröffentlichungsdaten in den Datenrahmen ein
    chataCD = pd.DataFrame({'year':releaseYear})

    #Stellen Sie die japanische Schriftart in seaborn ein
    sns.set(font='TakaoPGothic')

*** iterrows *** dreht den Datenrahmen mit den Originaldaten, um das Veröffentlichungsdatum der CD zu erhalten. *** iterrows *** ist eine Methode, die ein Tupel dreht, das aus ** Zeilenname ** und ** Zeilenwert ** besteht. Ist es ein Bild des vertikalen Drehens des Datenrahmens? (Referenz: http://sinhrks.hatenablog.com/entry/2015/06/18/221747) Da es als Veröffentlichungsdatum im Datensatz registriert ist, schneiden Sie es so, dass es zu "JJJJM" wird, und fügen Sie es in die Liste ein.

Verwenden Sie pd.DataFrame ({** Label Name **: *** Series ***}), um eine Liste der Veröffentlichungsdaten in den Datenrahmen einzufügen. Serie ist eine eindimensionale Liste. Zuerst habe ich versucht, das Veröffentlichungsdatum (Zeichenfolge) hinzuzufügen, während ich die Originaldaten gedreht habe, und bin fehlgeschlagen.

Stellen Sie die japanische Schriftart in Seaborn ein und Sie können loslegen. Hier wird TakaoPGothic angegeben. Ich habe mich auf Folgendes bezogen, um japanische Schriftarten anzugeben. [Seaborn] Japanisch anzeigen (Schriftart ändern)

Lassen Sie es uns mit Seaborn visualisieren. Beginnen wir mit einer einfachen Methode.

    fig = sns.countplot(x='year',data=chataCD,palette='Greens_r').get_figure()
    fig.suptitle('Änderungen in der Anzahl der CD-Veröffentlichungen von Chata-sans Songs(2000-2016)')
    sns.plt.savefig('countByYear_simple.png')

*** Countplot *** ist eine Methode, die X-Achsen- oder Y-Achsen-Daten zählt. Dies ist einfach, da Sie nur einen Datenrahmen übergeben müssen, der das Veröffentlichungsdatum jeder CD enthält. [Schöne Grafikzeichnung mit Python-Seaborn erleichtert die Datenanalyse und -visualisierung Teil 2] (http://qiita.com/hik0107/items/7233ca334b2a5e1ca924) *** Palette *** gibt die Farbpalette an. So wählen Sie die Seaborn-Farbpalette aus war hilfreich. Das Folgende ist das Ausgabediagramm. countByYear_simple.png

Als nächstes folgt eine Umleitungsmethode. Es wird länger dauern, aber dies ist eher eine Studie über Pandas.

    #Finden Sie die Anzahl der Veröffentlichungen nach Jahr und Monat
    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('Änderungen in der Anzahl der CD-Veröffentlichungen von Chata-sans Songs(2000-2016)')
    sns.plt.savefig('countByYear.png')

Für diejenigen, die einen Umweg machen, erstellen wir einen Datenrahmen mit zwei Datentypen, dem Veröffentlichungsdatum und der Anzahl der Veröffentlichungen. Aggregieren Sie zunächst die Anzahl der Elemente mit ** DataFrame.value_counts **.

** DataFrame.value_counts ** gibt * Series * zurück. In diesem Fall ist * index * das Jahr und der Monat und * values * die Anzahl der Blätter. Erstellen Sie eine Liste mit jedem Veröffentlichungsdatum und jeder Anzahl von Veröffentlichungen und geben Sie dort den Wert ein. *** iteritems *** dreht einen Taple, der aus * index * und * values * besteht. Fügen Sie also * row [0] * zum Veröffentlichungsdatum und * row [1] * zur Anzahl der Veröffentlichungen hinzu.

Nachdem aus der Liste des Veröffentlichungsdatums und der Anzahl der Veröffentlichungen ein Datenrahmen erstellt wurde, wird dieser mit Seaborn visualisiert. Verwenden Sie *** Balkendiagramm ***, um ein sogenanntes Balkendiagramm zu zeichnen. countByYear.png

Die Geschichte geht schief

Wenn ich Seaborn importiere und ausführe, wird die folgende Warnung angezeigt, aber ich habe Probleme, die Ursache zu verstehen ...

/.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)

Ich würde mich freuen, wenn Sie mir die Ursache in den Kommentaren mitteilen könnten.

Recommended Posts

Versuchen Sie, Doujin-Musikdaten mit Pandas zu aggregieren
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
Versuchen Sie schnell, Ihren Datensatz mit Pandas zu visualisieren
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Datenvisualisierung mit Pandas
Datenmanipulation mit Pandas!
Daten mit Pandas mischen
So konvertieren Sie horizontal gehaltene Daten mit Pandas in vertikal gehaltene Daten
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
Versuchen Sie, den Boden durch Rekursion herauszufordern
Datenverarbeitungstipps mit Pandas
Einfallsreichtum beim speichersparenden Umgang mit Daten mit Pandas
Versuchen Sie, die Datentabelle von Azure SQL Server mit pyodbc zu extrahieren
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Anhängen) zu verarbeiten.
Versuchen Sie, Daten zu erfassen, während Sie mit anaconda eine Portweiterleitung an RDS durchführen.
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Encoding) zu verarbeiten.
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner zu verarbeiten (Konvertierung).
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Versuchen Sie, Facebook mit Python zu betreiben
Umgang mit unausgeglichenen Daten
Versuchen Sie, sich mit ONNX Runtime zu profilieren
Vielseitige Datenerfassung mit Pandas + Matplotlib
Versuchen Sie, Daten in MongoDB abzulegen
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Ich möchte ○○ mit Pandas machen
Versuchen Sie, Audio mit M5 STACK auszugeben
Versuchen Sie Daten parallel zu Distributed TensorFlow
[Aktienkursanalyse] Lernen Sie Pandas mit Nikkei-Durchschnitt (004: Ändern Sie die gelesenen Daten in Nikkei-Durchschnitt)
[Pandas] Ich habe versucht, Verkaufsdaten mit Python zu analysieren. [Für Anfänger]
Versuchen Sie, den kürzesten Weg mit Python + NetworkX + Social Data zu lösen
Versuchen Sie, CloudWatch-Metriken mit der Python-Datenquelle re: dash abzurufen
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Drop) zu verarbeiten.
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Konvertieren Sie Excel-Daten mit Python in JSON
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
Konvertieren Sie Rasterdaten mithilfe von Pandas in zeilenhaltige (?) Daten
Senden Sie Daten mit Vue.js an die DRF-API
Versuchen Sie, Kirschblüten mit xg Boost vorherzusagen
Erster Versuch von YDK mit Cisco IOS-XE
Versuchen Sie, ein Bild mit Entfremdung zu erzeugen
Wie man Problemdaten mit Paiza liest
Behandeln Sie 3D-Datenstrukturen mit Pandas
Beispiel für eine effiziente Datenverarbeitung mit PANDAS
Best Practices für den Umgang mit Daten mit Pandas
Extrahieren Sie die Datentabelle von Azure SQL Server mit pyodbc und versuchen Sie, sie als numpy array / pandas dataframe zu definieren
Konvertieren Sie das PDF des mobilen Suica-Nutzungsverlaufs mit tabula-py in das Pandas-Datenrahmenformat
Versuchen Sie, Ihr eigenes AWS-SDK mit bash zu erstellen
Erstellen von CSV-Beispieldaten mit Hypothese
Versuchen Sie, das Fizzbuzz-Problem mit Keras zu lösen
[Einführung in das SEIR-Modell] Versuchen Sie, COVID-19-Daten anzupassen ♬
Versuchen Sie, mit django-import-export csv-Daten zu django hinzuzufügen
Konvertieren Sie Daten mit Form (Anzahl der Daten, 1) in (Anzahl der Daten,) mit numpy.
Lesen Sie Python-CSV-Daten mit Pandas ⇒ Graph mit Matplotlib
Ich habe versucht, die Daten mit Zwietracht zu speichern
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen