[PYTHON] Erstellen Sie eine Altersgruppe mit Pandas

Die für jedes Jahr aggregierten Werte werden für jeweils 10 Jahre zusammengefasst. Setze die Klasse mit cut of pandas und aggregiere mit groupby.

Die verwendeten Daten sind das CSV-Format des vom Statistikamt des Ministeriums für innere Angelegenheiten und Kommunikation veröffentlichten Excel "Bevölkerung nach Alter".

Löschen Sie zur Vereinfachung der Verwendung die Beschreibungszeile oben in den Daten, die Notiz unten sowie die Zeilen "100+" und "Unbekannt". Die angepasste Datei lautet "populations-by-age.csv".

Von Pandas verarbeitet

Laden Sie zuerst die Module "numpy" und "pandas". Ich habe auch eine Einstellung hinzugefügt, um das Diagramm in IPython zu zeichnen.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
pd.options.display.mpl_style = 'default'

Lesen Sie die CSV-Datei. Geben Sie die erste Spalte als Index an. Überprüfen Sie nach dem Lesen den Datentyp.

df = pd.read_csv('population-by-age.csv', index_col='age')
print df.dtypes
y1920    int64
y1930    int64
y1940    int64
y1950    int64
y1960    int64
y1970    int64
y1980    int64
y1990    int64
y2000    int64
y2010    int64
dtype: object

Lassen Sie uns außerdem den Anfang und das Ende sowie die Statistiken überprüfen. Die Anzeige entfällt.

print df.head(3)
print df.tail(3)
print df.describe()

Verwenden Sie cut, um die Klasse festzulegen. Wenn Sie die Klassenbreite ändern möchten, passen Sie das dritte Argument von "range" an. Das Einschließen oder Nichteinschließen beider Enden der Klasse ist als Option angegeben. Wechseln Sie entsprechend zwischen den Optionen * include_lowest * und * right *.

labels = [ "{0} - {1}".format(i, i + 9) for i in range(0, 100, 10) ]
c = pd.cut(df.index, np.arange(0, 101, 10),
           include_lowest=True, right=False,
           labels=labels)

print df.groupby(c).sum()
            y1920     y1930     y1940     y1950     y1960     y1970     y1980
0 - 9    14314635  16778220  17961607  20728122  17049068  16965066  18547450   
10 - 19  11520624  13340649  15816378  17267585  20326076  16921989  17231873   
20 - 29   8533259  10367140  11756837  13910662  16527810  19749434  16882381   
30 - 39   7020188   7798498   9370143  10250310  13555835  16578939  19973312   
40 - 49   5902331   6332741   7041270   8487529   9835689  13217564  16427887   
50 - 59   4074855   5046797   5446760   6137697   7842597   9230197  12813527   
60 - 69   2968342   2977915   3782574   4074610   5092019   6709761   8429928   
70 - 79   1378630   1478319   1541314   1967261   2518482   3401952   5059662   
80 - 89    236419    315624    338472    354836    638738    879221   1503633   
90 - 99     13657     13997     18567     16258     32043     65629    118391   

            y1990     y2000     y2010  
0 - 9    13959454  11925887  10882409  
10 - 19  18533872  14034777  11984392  
20 - 29  16870834  18211769  13720134  
30 - 39  16791465  16891475  18127846  
40 - 49  19676302  16716227  16774981  
50 - 59  15813274  19176162  16308233  
60 - 69  11848590  14841772  18247422  
70 - 79   6835747  10051176  12904315  
80 - 89   2665908   4147012   6768852  
90 - 99    286141    688769   1318463  

So konnte ich alle 10 Jahre die für jedes Altersjahr aggregierten Werte aggregieren.

Aggregatfunktionen können zusätzlich zu "sum" angegeben werden, und es können mehrere Aggregatfunktionen angegeben werden. Lassen Sie uns die folgenden Ergebnisse überprüfen.

print df.groupby(c).agg(['count', 'min', 'max', 'mean', 'std'])

Diagrammzeichnung

Da es schwierig ist, die Beziehung nur zu den oben genannten Zahlen zu verstehen, erstellen Sie ein Diagramm, um einen Überblick über die Zahlen zu erhalten. Versuchen Sie, sie nebeneinander anzuordnen, um die * gestapelten * Optionen beim Zeichnen zu vergleichen.

fig, axes = plt.subplots(ncols=2)
df.groupby(c).sum().plot(kind='bar', ax=axes[0])
df.groupby(c).sum().T.plot(kind='bar', stacked=True, ax=axes[1])

population-10year-bar.png

Betrachtet man alle 10 Jahre, so nimmt die Bevölkerung über 60 Jahre in jüngerer Zeit zu. Auf der anderen Seite können wir sehen, dass die Bevölkerung junger Menschen zurückgeht. Wenn wir uns die gestapelten Grafiken ansehen, können wir sehen, dass die Bevölkerung von 1920 bis 2000 stetig zugenommen hat, aber bis 2010 zurückgegangen ist. Bei der Erzeugungsverteilung nimmt das Verhältnis des oberen Teils des Balkens im Diagramm zu.

Nachdem wir nun einen allgemeinen Trend haben, werden wir jede Reihe des ursprünglichen Datenrahmens zeichnen. Wenn Sie es einfach zeichnen, wird es chaotisch. Zeichnen wir es also als separates Diagramm für jedes Jahr. Diesmal ist die Variable "Achsen" zweidimensional. Seien Sie also vorsichtig, wenn Sie den Array-Index angeben.

fig, axes = plt.subplots(nrows=5, ncols=2)
for i, y in enumerate(['y1920', 'y1930', 'y1940', 'y1950', 'y1960']):
    df[y].plot(ax=axes[i, 0])
    axes[i, 0].set_title(y)
    if y != 'y1960':
        axes[i, 0].get_xaxis().set_visible(False)
for i, y in enumerate(['y1970', 'y1980', 'y1990', 'y2000', 'y2010']):
    df[y].plot(ax=axes[i, 1])
    axes[i, 1].set_title(y)
    if y != 'y2010':
        axes[i, 1].get_xaxis().set_visible(False)

population-10year-transition.png

Wenn Sie sich die einzelnen Grafiken ansehen, können Sie die Auswirkungen des Babybooms erkennen. Sie können auch sehen, dass die Zahl der Geburten seit dem zweiten Babyboom zurückgegangen ist und dass sich die Basis älterer Menschen seit 1970 erweitert hat (die Lebensdauer wurde verlängert).

Recommended Posts

Erstellen Sie eine Altersgruppe mit Pandas
Erstellen Sie eine Umgebung mit virtualenv
Erstellen Sie eine API mit Django
Standardisieren Sie nach Gruppen mit Pandas
Bearbeiten von Strings mit Pandas gruppieren nach
Feature-Generierung mit Pandas gruppieren nach
Ich erhalte eine Fehlermeldung beim Import von Pandas.
Erstellen Sie eine Anwendung, indem Sie mit Pygame klassifizieren
Erstellen Sie mit PySimpleGUI einen Bildverarbeitungs-Viewer
Erstellen Sie schnell eine Excel-Datei mit Python #python
Erstellen Sie mit Django Updateview einen Update-Bildschirm
[Python] Erstellen Sie schnell eine API mit Flask
Generieren Sie eine add-in-fähige Excel-Instanz mit xlwings
Erstellen Sie eine englische Wort-App mit Python
Erstellen Sie mit cx_Freeze eine aktualisierbare MSI-Datei
Erstellen Sie eine App, die Schüler mit Python errät
Erstellen Sie ein akademisches Programm mit Kombinationsoptimierung
Erstellen Sie eine Bildkompositions-App mit Flask + Pillow
[Python-Pandas] Erstellen Sie einen leeren DataFrame aus einem vorhandenen DataFrame
Erstellen Sie ein Bild mit Zeichen mit Python (Japanisch)
Erstellen Sie schnell einen API-Server mit Python + Falcon
Mit Pandas schnell visualisieren
Datensätze mit Pandas verarbeiten (1)
Bootstrap-Sampling mit Pandas
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Datensätze mit Pandas verarbeiten (2)
Extrahieren Sie mit Pandas DataFrame N Proben für jede Gruppe
Pandas lernen mit Chemoinfomatik
Eine einfache Möglichkeit, ein Importmodul mit jupyter zu erstellen
Erstellen Sie eine App, die Schüler mit der Python-GUI-Version errät
Erstellen Sie eine Zufallszahl mit einer beliebigen Wahrscheinlichkeitsdichte
Datenvisualisierung mit Pandas
[Xlsxwriter] Erstellen Sie eine Excel-Tabelle mit bedingter Formatierung mit pandas + xlsxwriter [pandas] Memo
Erstelle Spiele mit Pygame
Erstellen Sie einen Filter mit scipy
Datenmanipulation mit Pandas!
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Daten mit Pandas mischen
Geben Sie nach dem Lesen einer Excel-Datei mit pandas read_excel ein
Erstellen Sie mit AirtestIDE eine Umgebung für die Testautomatisierung (Tipps)
[In 3 Zeilen] Zeichnen Sie die Bevölkerungspyramide (Balkendiagramm der Altersgruppe / des Geschlechts) nur mit Pandas
Erstellen Sie eine neue CSV mit Pandas basierend auf der lokalen CSV
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Minimales Makefile und buildout.cfg, um eine Umgebung mit buildout zu erstellen
Erstellen Sie mit dem Blender 2.80-Skript eine beispielhafte spielähnliche Phase
Erstellen wir eine App, die OIDC mit Azure AD authentifiziert
Erstellen Sie eine Authentifizierungsfunktion mit django-allauth und CustomUser in Django
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
[Python Kivy] So erstellen Sie mit pyinstaller eine exe-Datei
Lesen einer Excel-Datei (.xlsx) mit Pandas [Python]
So erstellen Sie einen Datenrahmen und spielen mit Elementen mit Pandas
Ich habe versucht, einen Artikel mit SQL Alchemy auf Wiki.js zu erstellen
Lesen Sie CSV mit Python-Pandas
Laden Sie verschachtelten Json mit Pandas
Erstellen Sie Cloud-TPU mit tf-nightly
Erstellen / Suchen / Erstellen einer Tabelle mit PynamoDB
Erstellen Sie ein 3D-GIF mit Python3