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)