Possiamo caricare un DataFrame di panda nello spazio .NET usando iron python? In caso contrario, sto pensando di convertire pandas df in un file csv e poi di leggere nello spazio .net.Possiamo caricare panda DataFrame in. Ironpython?
risposta
No, Panda è abbastanza ben collegato a CPython. Come hai detto tu, la cosa migliore da fare è fare l'analisi in CPython con Pandas ed esportare il risultato in CSV.
E 'possibile chiamare CPython da .NET utilizzando Python.NET:
Per quanto riguarda l'opzione tra cui serializzazione:
sto ancora indagando caso simile - vogliamo elaborare il dati in python e quindi utilizzare i risultati in C#. Il nostro requisito era quello di (preferibilmente) mantenere indipendente la piattaforma della parte python in modo che possiamo eseguire il nostro numero di crunch su linux o windows. farla breve abbiamo deciso di utilizzare binari serializzazione/deserializzazione con messaggio Pack: http://msgpack.org/index.html
Noi convertire i valori dataframe per elencare, e serializzare al file:
import msgpack as mp
data_as_list = df.values.tolist()
mp.pack(data_as_list, open("d:\\msgpack1.mp",'wb'))
Poi sul # lato C si usa il. implementazione netto di MessagePack per deserializzare i dati:
using MsgPack;
var serializer =
SerializationContext.Default.GetSerializer<MessagePackObject[][]>();
var unpackedObject = serializer.Unpack(File.OpenRead("d:\\msgpack1.mp"));
principali vantaggi di serializzazione binaria:
- è meno soggetto a eventuali problemi legati codifica confronto al testo formati di serializzazione based come csv, JSON o XML
- a seconda dei dati che può essere più veloce di CSV (che era nel nostro caso): http://matthewrocklin.com/blog/work/2015/03/16/Fast-Serialization/
Pandas fa affidamento su numpy, che a mia conoscenza ha ormai una solida porta su IronPython. Ma dipende anche da Cython e C per ottenere prestazioni elevate, giusto? Quest'ultimo è probabilmente il grande problema, non numpy. –