从R到Python,什么';python是数据帧的等价物吗?
我熟悉R数据持有者,如向量、数据帧等,但需要进行一些文本分析,而且python似乎有一些很好的设置。我的问题是,在哪里可以找到python如何保存数据的解释 具体地说,我在一个选项卡分隔的文件中有一个数据集,其中文本在第3列,我需要的数据评分在第4列从R到Python,什么';python是数据帧的等价物吗?,python,r,Python,R,我熟悉R数据持有者,如向量、数据帧等,但需要进行一些文本分析,而且python似乎有一些很好的设置。我的问题是,在哪里可以找到python如何保存数据的解释 具体地说,我在一个选项卡分隔的文件中有一个数据集,其中文本在第3列,我需要的数据评分在第4列 id1 id2 text score 123 889 "This is the text I need to read
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中,我只需将其加载到名为df1
的数据帧中,当我想要调用列时,我会使用df1$text或df1[,3]
,如果我想要一个特定的单元格,我可以使用df1[1,3]
我开始了解如何将数据读入python,而不是如何处理类似表的结构
对于python新手,您建议如何使用此工具 我不确定这是否能很好地转换为我从未使用过的“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]
查看库中的对象。除了Panda的数据帧,您还可以使用rpy2库(从):
我过去使用过的一个选项是
csv.DictReader
,它允许您按名称引用一行中的数据(每行都成为dict
):
输出:
{'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'}
Ullrich先生使用该库的答案是最接近R数据帧的方法。但是,如果需要,您可以使用将数据类型设置为
object
,以获得极其相似的功能。较新版本的numpy与data.frame
类似,它的索引功能实际上比R更强大,并且它包含对象的能力远远超出了R的能力
根据手头的任务,我同时使用R和numpy。使用公式和内置的统计数据时,R要好得多。Python代码更易于维护,也更容易连接到其他系统
编辑:添加了注意事项,numpy现在具有字段名功能在python中与R等价的是Pandas 如下所示初始化数据帧
import pandas as pd
df = pd.read_csv("filename")
print df.head()
Python没有与数据等价的东西frame@DavidHeffernan那东西呢?这不是(有意)接近吗?@joran那是第三方。我想我的意思是没有任何内置的方式,R的数据帧是内置的。R的
data.frame
可以包含list
列。列表
列的每个元素都可以是您喜欢的任何内容,包括数据对象、函数等。这就是您的意思吗?
{'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'}
import pandas as pd
df = pd.read_csv("filename")
print df.head()