Python Pandas - Verkettung

Pandas bietet verschiedene Möglichkeiten zum einfachen Kombinieren Series, DataFrame, und Panel Objekte.

pd.concat(objs,axis=0,join='outer',join_axes=None,
ignore_index=False)
  • objs - Dies ist eine Sequenz oder Zuordnung von Serien-, DataFrame- oder Panel-Objekten.

  • axis - {0, 1, ...}, Standard 0. Dies ist die Achse, entlang der verkettet werden soll.

  • join- {'inner', 'äußere'}, Standard 'äußere'. Umgang mit Indizes auf anderen Achsen. Außen für Vereinigung und Innen für Kreuzung.

  • ignore_index- Boolescher Wert, Standardwert False. Wenn True, verwenden Sie nicht die Indexwerte auf der Verkettungsachse. Die resultierende Achse wird mit 0, ..., n - 1 bezeichnet.

  • join_axes- Dies ist die Liste der Indexobjekte. Spezifische Indizes, die für die anderen (n-1) Achsen verwendet werden sollen, anstatt die innere / äußere Mengenlogik auszuführen.

Objekte verketten

Das concatDie Funktion erledigt das gesamte schwere Heben der Durchführung von Verkettungsvorgängen entlang einer Achse. Lassen Sie uns verschiedene Objekte erstellen und Verkettungen durchführen.

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print pd.concat([one,two])

Es ist output ist wie folgt -

Marks_scored     Name   subject_id
1             98     Alex         sub1
2             90      Amy         sub2
3             87    Allen         sub4
4             69    Alice         sub6
5             78   Ayoung         sub5
1             89    Billy         sub2
2             80    Brian         sub4
3             79     Bran         sub3
4             97    Bryce         sub6
5             88    Betty         sub5

Angenommen, wir wollten jedem Teil des zerhackten DataFrame bestimmte Schlüssel zuordnen. Wir können dies tun, indem wir diekeys Argument -

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'])

Es ist output ist wie folgt -

x  1  98    Alex    sub1
   2  90    Amy     sub2
   3  87    Allen   sub4
   4  69    Alice   sub6
   5  78    Ayoung  sub5
y  1  89    Billy   sub2
   2  80    Brian   sub4
   3  79    Bran    sub3
   4  97    Bryce   sub6
   5  88    Betty   sub5

Der Index der Resultierenden wird dupliziert; Jeder Index wird wiederholt.

Wenn das resultierende Objekt einer eigenen Indizierung folgen muss, setzen Sie ignore_index zu True.

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'],ignore_index=True)

Es ist output ist wie folgt -

Marks_scored     Name    subject_id
0             98     Alex          sub1
1             90      Amy          sub2
2             87    Allen          sub4
3             69    Alice          sub6
4             78   Ayoung          sub5
5             89    Billy          sub2
6             80    Brian          sub4
7             79     Bran          sub3
8             97    Bryce          sub6
9             88    Betty          sub5

Beachten Sie, dass sich der Index vollständig ändert und die Schlüssel ebenfalls überschrieben werden.

Wenn zwei Objekte hinzugefügt werden müssen axis=1Dann werden die neuen Spalten angehängt.

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print pd.concat([one,two],axis=1)

Es ist output ist wie folgt -

Marks_scored    Name  subject_id   Marks_scored    Name   subject_id
1           98      Alex      sub1         89         Billy         sub2
2           90       Amy      sub2         80         Brian         sub4
3           87     Allen      sub4         79          Bran         sub3
4           69     Alice      sub6         97         Bryce         sub6
5           78    Ayoung      sub5         88         Betty         sub5

Verketten mit Anhängen

Eine nützliche Verknüpfung zum Concat sind die Methoden zum Anhängen von Instanzen in Series und DataFrame. Diese Methoden waren tatsächlich älter als concat. Sie verketten sichaxis=0, nämlich der Index -

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print one.append(two)

Es ist output ist wie folgt -

Marks_scored    Name  subject_id
1           98      Alex      sub1
2           90       Amy      sub2
3           87     Allen      sub4
4           69     Alice      sub6
5           78    Ayoung      sub5
1           89     Billy      sub2
2           80     Brian      sub4
3           79      Bran      sub3
4           97     Bryce      sub6
5           88     Betty      sub5

Das append Funktion kann auch mehrere Objekte aufnehmen -

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print one.append([two,one,two])

Es ist output ist wie folgt -

Marks_scored   Name    subject_id
1           98     Alex          sub1
2           90      Amy          sub2
3           87    Allen          sub4
4           69    Alice          sub6
5           78   Ayoung          sub5
1           89    Billy          sub2
2           80    Brian          sub4
3           79     Bran          sub3
4           97    Bryce          sub6
5           88    Betty          sub5
1           98     Alex          sub1
2           90      Amy          sub2
3           87    Allen          sub4
4           69    Alice          sub6
5           78   Ayoung          sub5
1           89    Billy          sub2
2           80    Brian          sub4
3           79     Bran          sub3
4           97    Bryce          sub6
5           88    Betty          sub5

Zeitfolgen

Pandas bieten ein robustes Tool für die Arbeitszeit mit Zeitreihendaten, insbesondere im Finanzsektor. Bei der Arbeit mit Zeitreihendaten stoßen wir häufig auf Folgendes:

  • Zeitfolge erzeugen
  • Konvertieren Sie die Zeitreihen in verschiedene Frequenzen

Pandas bietet einen relativ kompakten und in sich geschlossenen Werkzeugsatz zur Ausführung der oben genannten Aufgaben.

Aktuelle Zeit abrufen

datetime.now() gibt Ihnen das aktuelle Datum und die Uhrzeit.

import pandas as pd

print pd.datetime.now()

Es ist output ist wie folgt -

2017-05-11 06:10:13.393147

Erstellen Sie einen Zeitstempel

Zeitstempeldaten sind die grundlegendsten Arten von Zeitreihendaten, die Werte mit Zeitpunkten verknüpfen. Für Pandas-Objekte bedeutet dies, die Zeitpunkte zu verwenden. Nehmen wir ein Beispiel -

import pandas as pd

print pd.Timestamp('2017-03-01')

Es ist output ist wie folgt -

2017-03-01 00:00:00

Es ist auch möglich, ganzzahlige oder Float-Epochenzeiten zu konvertieren. Die Standardeinheit für diese ist Nanosekunden (da auf diese Weise Zeitstempel gespeichert werden). Oft werden Epochen jedoch in einer anderen Einheit gespeichert, die angegeben werden kann. Nehmen wir ein anderes Beispiel

import pandas as pd

print pd.Timestamp(1587687255,unit='s')

Es ist output ist wie folgt -

2020-04-24 00:14:15

Erstellen Sie einen Zeitbereich

import pandas as pd

print pd.date_range("11:00", "13:30", freq="30min").time

Es ist output ist wie folgt -

[datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0)
datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)]

Ändern Sie die Häufigkeit der Zeit

import pandas as pd

print pd.date_range("11:00", "13:30", freq="H").time

Es ist output ist wie folgt -

[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)]

Konvertieren in Zeitstempel

Um eine Serie oder ein listähnliches Objekt von datumsähnlichen Objekten zu konvertieren, z. B. Zeichenfolgen, Epochen oder eine Mischung, können Sie die verwenden to_datetimeFunktion. Bei Übergabe wird eine Serie (mit demselben Index) zurückgegeben, während alist-like wird in a umgewandelt DatetimeIndex. Schauen Sie sich das folgende Beispiel an -

import pandas as pd

print pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None]))

Es ist output ist wie folgt -

0  2009-07-31
1  2010-01-10
2         NaT
dtype: datetime64[ns]

NaT meint Not a Time (entspricht NaN)

Nehmen wir ein anderes Beispiel.

import pandas as pd

print pd.to_datetime(['2005/11/23', '2010.12.31', None])

Es ist output ist wie folgt -

DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None)