2013-01-16 40 views
5

Tiếp theo ví dụ ở đâyRMagic, IPython và Tóm tắt Thông tin

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

Tôi đã cố gắng như nhau trên một bộ dữ liệu khác nhau tìm thấy ở đây, trong một máy tính xách tay 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)) 

tôi nhận được

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

Tuy nhiên giống nhau ở R

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

mang lại cho tôi những thông tin tóm tắt chính xác.

 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 
... 

Bất kỳ ý tưởng nào?

+0

Là một đoán, nó chuyển đổi Pandas DataFrame đến một ma trận R, chứ không phải là một R dataframe. Chúng ta nên cải thiện điều này. –

+0

@ Thomas-K: Dường như với tôi rằng nó đã chuyển đổi thành danh sách các danh sách (danh sách). Chúng ta nên mở một vấn đề trên trang dev cho ipython (có ý nghĩa hơn là trên trang của rpy2) và làm việc để cải thiện quy tắc chuyển đổi rmagic đang sử dụng. – lgautier

+0

Tôi đã tạo ra vấn đề trên trang GH cho ipython - https://github.com/ipython/ipython/issues/2797 – user423805

Trả lời

2

Tôi đã xem nhanh và dường như có một số trường hợp trong đó ma thuật ipython không nhận được quyền chuyển đổi. Tôi phải liên lạc với họ về rmagic và phép thuật khác.

Trong khi đó, bạn sẽ có thể nấu lên những gì bạn cần để tiến bộ từ các đoạn mã dưới đây:

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

Lưu ý rằng chức năng này hiện đang ở trong rpy2 2.3.3+ (xem http://rpy.sourceforge.net/rpy2/doc-2.3/html/changes.html?highlight=pandas)! –

Các vấn đề liên quan