[PYTHON] Fügen Sie mit Pandas Summen zu Zeilen und Spalten hinzu

Ich werde es als Memorandum schreiben, wenn ich * pandas * benutze. Das sagt die Antwort hier.

df = pd.concat([df,pd.DataFrame(df.sum(axis=0),columns=['Grand Total']).T])
df = pd.concat([df,pd.DataFrame(df.sum(axis=1),columns=['Total'])],axis=1)

Die Grundlagen von * pandas * sind im offiziellen Handbuch zusammengefasst, so dass es in ca. 10 Minuten gelesen werden kann.

Als Testdaten verwenden wir Wetterinformationen aus der Vergangenheit, die von der Meteorologischen Agentur heruntergeladen werden können. Die Wetterbedingungen für Tokio für ein Jahr (Januar bis Dezember 2013) werden monatlich summiert und die Summe der Zeilen und Spalten berechnet.

Meteorological Agency | Frühere meteorologische Daten herunterladen

気象庁 過去の気象データ・ダウンロード.png

Umgebungseinstellung

Stellen Sie die unabhängige Python-Bibliothek in pyvenv zur Verfügung.

$ PYVENV_DIR=$HOME/.pyvenv/data-analytics
$ pyvenv-3.4 $PYVENV_DIR
$ source $PYVENV_DIR/bin/activate
$ pip install pandas

Nennen wir die von der Meteorologischen Agentur heruntergeladene Datei "weather-tokyo-2013.csv". Da es schwierig ist, mit * pandas * beim Herunterladen umzugehen, wird eine Vorverarbeitung durchgeführt.

Bestätigung des Datenlesens mit Pandas

>>> import pandas as pd

# Read CSV file, whose "day" column is parsed with `dateutil.parser.parse`.
>>> fname = 'weather-tokyo-2013.csv'
>>> df = pd.read_csv(fname, parse_dates=['day'])

# Check DataFrame overview.
>>> df.dtypes
>>> df.head(3)
>>> df.describe()

Ich konnte bestätigen, dass die CSV-Datei in * DataFrame * geladen wurde.

Extrahieren Sie dann den Teil "Monat" aus der Spalte "Tag" und fügen Sie ihn der Spalte "Monat" hinzu. Die Spalte "Tag" wird beim Lesen der CSV als Datum und Uhrzeit erkannt, sodass Sie die Datums- / Uhrzeit-API verwenden können.

>>> df['month'] = df['day'].apply(lambda x: x.month)

Aggregieren Sie nach groupby und fügen Sie den Gesamtwert für Zeilen und Spalten hinzu

>>> grouped = df.groupby(['weather_day', 'month'])['day'].count()
>>> type(grouped)
>>> grouped.index
>>> grouped.head(3)

Der Rückgabewert von groupby ist * Series *. Verwenden Sie daher die unstack-Methode, um ihn in * DataFrame * zu konvertieren. Auf diese Weise können Sie die Zeilen- und Spaltensummen im Eröffnungsprozess berechnen, in diesem Fall die monatlichen Summen für die Wetterübersicht.

>>> monthly = grouped.unstack()

# Add "Total" column on each row.
>>> monthly = pd.concat([monthly,
                         pd.DataFrame(monthly.sum(axis=1), columns=['Total'])],
                        axis=1)
# Add "Grand Total" row on each column.
>>> monthly = pd.concat([monthly,
                         pd.DataFrame(monthly.sum(axis=0), columns=['Grand Total']).T])

Neben einfachen Summen können Sie auch nach Zeilen- oder Spaltennamen filtern, um sie zu addieren. In Anbetracht der Tatsache, dass ein Tag mit "Regen" in der Wetterlage ein Regentag und ein Tag mit "Fein" ein sonniger Tag ist, kann der Indexname zur Berechnung wie folgt verwendet werden. (Da die tatsächlichen Daten Wetter wie "sonniger vorübergehender Regen" enthalten, gibt es Tage, an denen es dupliziert wird.)

>>> monthly = pd.concat([monthly,
                         pd.DataFrame(monthly[monthly.index.map(lambda x: 'Regen' in x)].sum(axis=0), columns=['Rainy']).T])
>>> monthly = pd.concat([monthly,
                         pd.DataFrame(monthly[monthly.index.map(lambda x: 'Fein' in x)].sum(axis=0), columns=['Fine']).T])

Schreiben Sie abschließend die aggregierten Ergebnisse in eine Textdatei. Sie können den Header, den Indexnamen usw. mit optionalen Argumenten steuern. Beispielsweise wird das Trennzeichen durch * sep * angegeben.

>>> fname = 'weather-tokyo-2013-monthly-weather_name.csv'
>>> monthly.to_csv(fname, sep=',')

Überprüfen Sie anschließend das Ergebnis mit einer Tabellenberechnungssoftware wie Excel.

Zeichnen Sie ein Diagramm mit ipython

Sie können die Datendatei in Excel öffnen und das Diagramm zeichnen, aber Sie können auch in Python mit * matplotlib * zeichnen. Wenn Sie es für eine Weile verwenden möchten, verwenden Sie * ipython *. Es wird die Aufgaben der Grafikverarbeitung hinter den Kulissen ausführen.

$ pip install matplotlib ipython
$ ipython

Sie befinden sich jetzt in der interaktiven IPython-Shell. Lesen Sie die soeben exportierten Daten und zeichnen Sie eine Grafik des monatlichen Übergangs zwischen sonnigen und regnerischen Tagen.


In [1]: import pandas as pd

In [2]: pd.options.display.mpl_style = 'default'

In [3]: fname = 'weather-tokyo-2013-monthly-weather_name.csv'

In [4]: df = pd.read_csv(fname, index_col=0)

In [5]: df.T[['Fine', 'Rainy']][:12].plot(color=['r', 'b']).set_xlabel('Month')
Out[5]: <matplotlib.text.Text at 0x106cb89e8>

Ein solches Diagramm sollte in einem separaten Fenster gezeichnet werden.

月別の天候変化_東京.png

Da es im Juni regnet, regnet es viel (weniger als die Hälfte der Tage), und Sie können sehen, dass es im Januar fast keine Regentage gibt. Das Wetter ändert sich leicht im Oktober, aber es scheint immer noch mehr Sonnentage als Regentage zu geben. Da die groben Aggregationsbedingungen leicht zu implementieren und die Schwankungen leicht zu verstehen sind, aggregieren wir bei der Durchführung einer detaillierten Analyse die Werte der Wetterübersicht nach deren Kategorisierung.

Recommended Posts

Fügen Sie mit Pandas Summen zu Zeilen und Spalten hinzu
[Python] Fügen Sie Pandas DataFrame insgesamt Zeilen hinzu
Hinzufügen von Serien zur Spalte in Python-Pandas
[Python] Vertauschen von Zeilen und Spalten mit Numpy-Daten
Wichtige Ergänzungen zu den Pandas 1.1.0 und 1.0.0
Tauschen Sie Spalten in Pandas-Datenrahmen aus
Praktische Funktion zum Hinzufügen von Spalten an einer beliebigen Stelle in Pandas DataFrame
So erstellen Sie einen Datenrahmen und spielen mit Elementen mit Pandas
[Python] So löschen Sie eine Zeile / Spalte in einer Tabelle (Liste der Optionen für die Drop-Methode)
Wie man nüchtern mit Pandas schreibt
Verwendung berechneter Spalten in CASTable
Laden Sie csv mit doppelten Spalten in Pandas
So ändern Sie mehrere Spalten von csv in Pandas (Unixtime-> Japan Time)
So erhalten Sie mit pandas DataFrame einen bestimmten Spaltennamen und Indexnamen
Erstellen Sie mit Numpy ein leeres Array, um Zeilen für jede Schleife hinzuzufügen
Fügen Sie in Jupyter IPerl zum Kernel hinzu.
So weisen Sie den Index im Pandas-Datenrahmen neu zu
[Python] Pandas in 10 Minuten vollständig zu verstehen
Es ist sehr nützlich, Target in Luigi die Methoden save () und load () hinzuzufügen
Lesen von CSV-Dateien mit Pandas
Verwendung ist und == in Python
Verwendung von pandas Timestamp und date_range
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)
[Pandas] So überprüfen Sie Duplikate in einer Tabelle und löschen Duplikate (entspricht dem Löschen von Duplikaten in Excel)
So generieren Sie eine Sequenz in Python und C ++
Fügen Sie einem leeren Array mit numpy Zeilen hinzu
Löschen Sie Zeilen mit beliebigen Werten in pandas DataFrame
Senden Sie eine Nachricht an Skype und Chatwork in Python
Der Header ist falsch ausgerichtet mit read_csv () und read_table () von Pandas
So fügen Sie Python ein Modul hinzu, das Sie in Julialang eingefügt haben
Fügen Sie eine Abfrage zur analysierten URL hinzu und kehren Sie zur ursprünglichen URL zurück
Entfernen Sie Zeilen mit doppelten Indizes in pandas DataFrame
Zur Darstellung von Datum, Uhrzeit, Uhrzeit und Sekunden in Python
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
Zeigen und analysieren Sie nur einige Spalten in CASTable
Aufteilen von Trainingsdaten für maschinelles Lernen in objektive Variablen und andere in Pandas
[Python] Japanische CSV mit Pandas ohne verstümmelte Zeichen lesen (weitere auf Japanisch geschriebene Spalten extrahieren)
Konvertieren Sie Datum und Uhrzeit in Zeitzonen in Unixtime in Python2.7
[Python] [Django] Verwendung des Auswahlfelds und Hinzufügen von Optionen
Verschiedene Methoden zum Extrahieren von Spalten des NumPy-Arrays
Lassen Sie Keras 2.0 und OpenCV 3.2 in einer GPU-Umgebung arbeiten
Fügen Sie der EV3 Micropyhon-Programmierung in VS Code eine automatische Ergänzung hinzu
Funktion zum Zurückgeben mehrerer Spalten an einzelne Spalten in DataFrame
So definieren Sie Decorator und Decomaker mit einer Funktion
numpy memorandum 2 / transponieren vertauscht nicht nur Zeilen und Spalten
Konvertieren Sie durch Kommas getrennte numerische Zeichenfolgen in Zahlen in Pandas DataFrame
Zugriff mit dem Cache beim Lesen von_json mit Pandas
Fügen Sie Festplatten hinzu, um den SWAP- und / oder Home-Bereich des LVM zu erweitern
Schreiben Sie Tests in Python, um die Abdeckung zu profilieren und zu überprüfen
[Spark] Ich bin süchtig nach "", null und [] in DataFrame
So fügen Sie einer PDF-Datei Seitenzahlen hinzu (in Python)
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Wie man Decorator in Django benutzt und wie man es macht
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
Konvertieren Sie numerische Variablen mit Pandas in kategoriale Variablen, indem Sie einen Schwellenwert festlegen
Gehen Sie in die Sprache, um Teil 7 C in der Sprache GO zu sehen und sich daran zu erinnern
So erhalten Sie RGB- und HSV-Histogramme mit OpenCV
[Python] Verwenden Sie DataFrame, um beliebige Variablen und Arrays zusammen zu kennzeichnen und in csv [pandas] zu speichern.