2012-03-08 94 views
22

我对R数据持有者比较熟悉,比如向量,数据框等,但需要做一些文本分析,似乎python有一些很好的设置。我的问题是我在哪里可以找到python如何保存数据的解释。从R到Python,什么是数据框的python等价物?

具体来说,我有一个数据集在一个制表符分隔的文件中,文本在第三列,我需要的数据的得分是在第四列。

id1   id2   text        score 
123   889  "This is the text I need to read..."  88 
234   778  "This is the text I need to read..."  78 
345   667  "This is the text I need to read..."  91 

在R I只希望将其加载到一个名为df1数据帧,当我想叫一个专栏中,我会使用DF1 $文字或df1[,3],如果我想要一个特定的细胞,我可以用df1[1,3]

我感觉如何将数据读入python,但不知道如何处理表结构。

你会如何建议与python新手合作?

+0

Python有没有相当于数据框 – 2012-03-08 16:33:59

+4

@DavidHeffernan那[pandas](http://pandas.pydata.org/)的东西呢?这不是(意图)关闭吗? – joran 2012-03-08 16:39:16

+2

@joran这是第三方。我想我的意思是没有内置R数据框的内置方式。 – 2012-03-08 16:40:23

回答

8

我不知道有多好这相当于我从来没有使用过“R”,但在Python,这是我会怎么处理它:

lines = list() 
with open('data.txt','r') as f: 
    for line in f: 
     lines.append(line.split()) 

将读取的Python列表一切。列表是从零开始的。从第二行获得的文本列:

print lines[1][2] 

比分该行:

print lines[1][3] 
4

一种选择是csv.DictReader,它可以让你在一排被引用的数据名称(每行变为dict):

import csv 
with open('data.txt') as f: 
    reader = csv.DictReader(f, delimiter = '\t') 
    for row in reader: 
     print row 

输出:

{'text': 'This is the text I need to read...', 'score': '88', 'id2': '889', 'id1': '123'} 
{'text': 'This is the text I need to read...', 'score': '78', 'id2': '778', 'id1': '234'} 
{'text': 'This is the text I need to read...', 'score': '91', 'id2': '667', 'id1': '345'} 
11

Ullrich先生使用pandas库的答案是最接近R数据框的方法。但是,如果需要,可以使用numpy array获得极其类似的功能,数据类型设置为object。较新版本的numpy有field name capabilities类似于data.frame,它的索引实际上比R更强大,它包含对象的能力远远超出了R的能力。

我使用R和numpy,这取决于手头的任务。通过公式和内置统计数据,R更好。 Python代码更易于维护,更容易连接到其他系统。

编辑:补充说明的是NumPy的现在有字段名的功能

+0

R的'data.frame'可以包含'list'列。 “列表”列中的每个元素可以是任何你喜欢的东西,包括数据对象,函数等。这就是你的意思吗? – 2012-03-27 14:10:25

0

R的蟒蛇等效为大熊猫

您intialise一个数据帧如下

import pandas as pd 
df = pd.read_csv("filename") 

print df.head() 
相关问题