English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Esempio di operazione di connessione di Pandas
Pandas fornisce diverse funzionalità che consentono di combinare facilmente Series, DataFrame e oggetti Panel.
pd.concat(objs,axis=0,join='outer',join_axes=None, ignore_index=False)
objs − È una sequenza di Series o mappatura, DataFrame o oggetto Panel. axis − {0, 1, ...}, predefinito a 0. È l'asse da connettere. join − {'interno', 'esterno'}, predefinito a 'esterno'. Come gestire gli indici degli altri assi. Esterno è l'unione, interno è la croce. ignore_index − Valore booleano, predefinito a False. Se impostato su True, non utilizzare i valori di indice sull'asse di connessione. L'asse di risultato sarà etichettato come 0, ..., n-1. join_axes − È una lista di oggetti di indice. Utilizzata per l'indice specifico degli altri assi (n-1), non per eseguire la logica di impostazione interna/esterna.
La funzione CONCAT esegue tutte le operazioni di connessione lungo l'asse. Creiamo oggetti diversi e connettiamoli.
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])))
运行结果如下:
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
Supponiamo che vogliamo associare chiavi specifiche a ciascuna porzione del DataFrame spezzato. Possiamo farlo utilizzando il parametro keys-
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']))
运行结果如下:
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
L'indice dei risultati è duplicato; ogni indice è duplicato.
Se l'oggetto dei risultati deve seguire il proprio indice, impostare ignore_index su 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))
运行结果如下:
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
Attenzione, l'indice viene completamente modificato e anche le chiavi vengono sovrascritte.
Se si desidera aggiungere due oggetti lungo axis = 1, verranno aggiunte nuove colonne.
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))
运行结果如下:
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
Il modo rapido di usare Concat è tramite i metodi di appendimento su Series e DataFrame. Questi metodi sono in realtà precedenti a concat. Connessione lungo l'asse = 0, ossia l'indice-
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)))
运行结果如下:
Marks_scored Nome 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
Questa funzione aggiuntiva può accettare più oggetti, e-
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])))
运行结果如下:
Marks_scored Nome 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
Pandas fornisce strumenti potenti per gestire i dati sequenziali, specialmente nel campo finanziario. Quando si lavora con dati sequenziali, spesso ci si incontra con le seguenti situazioni:
genera un'ordine temporale converti una serie temporale in una frequenza diversa
fornisce un set di strumenti relativamente compatti e indipendenti per eseguire le suddette operazioni.
datetime.now()fornisci la data e l'ora attuale.
import pandas as pd print(pd.datetime.now())
运行结果如下:
2017-05-11 06:10:13.393147
Il tipo di dati timestamp è il tipo di dati sequenziale più fondamentale che associ un valore a un punto temporale. Per gli oggetti Pandas, questo significa utilizzare il punto temporale. Facciamo un esempio -
import pandas as pd print(pd.Timestamp('2017-03-01'))
运行结果如下:
2017-03-01 00:00:00
puoi anche convertire numeri interi o decimali come tempo. Il loro unità predefinita è nanosecondi (poiché è il modo in cui vengono memorizzati i timestamp). Tuttavia, di solito si memorizza l'era in un'altra unità specificabile. Ecco un altro esempio
import pandas as pd print(pd.Timestamp(1587687255, unit='s'))
运行结果如下:
2020-04-24 00:14:15
import pandas as pd print(pd.date_range("11:00", "13:30", freq="30min").time)
运行结果如下:
[datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0) datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)
import pandas as pd print(pd.date_range("11:00", "13:30", freq="H").time)
运行结果如下:
[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)]
若要将类似日期的对象的系列或类似列表的对象(例如字符串,历元或混合)转换,可以使用to_datetime函数。传递时,将返回一个Series(具有相同的索引),而类似列表的列表将转换为DatetimeIndex。看下面的实例-
import pandas as pd print(pd.to_datetime(pd.Series(['Jul 31, 2009', '2010-01-10', None])))
运行结果如下:
0 2009-07-31 1 2010-01-10 2 NaT dtype: datetime64[ns]
NaT表示非时间(相当于NaN)
让我们再举一个例子。
import pandas as pd print(pd.to_datetime(['2005/11/23', '2010.12.31', None]))
运行结果如下:
DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None)