2013-01-16 12 views
5

Idąc za przykładem tutajRMagic, ipython i Podsumowanie Informacja

http://www.randalolson.com/2013/01/14/filling-in-pythons-gaps-in-statistics-packages-with-rmagic/

Próbowałem to samo na innym zestawie danych znaleźć tutaj, w notebooku ipython.

https://github.com/burakbayramli/kod/blob/master/delltest/dell.tgz

from pandas import * 
orders = read_csv("dell.csv",sep=",") 
%load_ext rmagic 
%R -i orders print(summary(orders)) 

uzyskać

 Length Class Mode 
[1,] 25  -none- list 
[2,] 25  -none- list 
[3,] 25  -none- list 
.. 

Jednak samo w R

data <- read.csv ("dell.csv",header=TRUE,sep=",") 
print (summary(data)) 

daje mi prawidłowe informacje podsumowujące.

 rank  per_customer_count total_total_amount orderid  
Min. : 1.000 Min. : 1.000  Min. : 0.14 Min. : 1 
1st Qu.: 2.000 1st Qu.: 6.000  1st Qu.: 866.11 1st Qu.: 2964 
Median : 4.000 Median : 8.000  Median : 1764.08 Median : 5980 
Mean : 4.997 Mean : 9.426  Mean : 2004.95 Mean : 5987 
3rd Qu.: 7.000 3rd Qu.:12.000  3rd Qu.: 2856.06 3rd Qu.: 9004 
... 

Wszelkie pomysły?

+0

Jako odgadnięcia, to przekształcenie pandy DataFrame do macierzy R, raczej niż R-ramka danych. Powinniśmy to poprawić. –

+0

@ Thomas-K: Wydawało mi się, że konwertował na listę list (list). Powinniśmy otworzyć problem na stronie dla ipython (ma to więcej sensu niż na stronie rpy2) i pracować nad udoskonaleniem reguł konwersji używanych przez rmagic. – lgautier

+0

Stworzyłem problem na stronie GH dla ipython - https://github.com/ipython/ipython/issues/2797 – user423805

Odpowiedz

2

Spojrzałem szybko i wydaje się, że istnieje wiele sytuacji, w których ipython magic nie otrzymuje prawidłowej konwersji. Muszę się z nimi skontaktować w sprawie rmagic i jeszcze więcej magii.

W międzyczasie, powinny być w stanie gotować, co trzeba przejść od fragmentu kodu poniżej:

import pandas 
orders = pandas.read_csv("dell.csv", sep=",") 
%load_ext rmagic 

import rpy2.robjects 
d = dict() 
for i, (k,v) in enumerate(orders.iteritems()): 
    print("%s (type: %s - %i/%i)" %(k, v.dtype.kind, i, orders.shape[1])) 
    if v.dtype.kind == 'O': 
     v = rpy2.robjects.vectors.StrVector(v) 
    d[k] = rpy2.robjects.conversion.py2ri(v) 
df = rpy2.robjects.DataFrame(d) 

def print_rsummary(x): 
    print(rpy2.robjects.baseenv['summary'](x)) 

print_rsummary(df) 
+0

Należy zauważyć, że ta funkcja jest teraz dostępna w wersji rpy2 2.3.3+ (zobacz http://rpy.sourceforge.net/rpy2/doc-2.3/html/changes.html?highlight=pandas)! –