Подтвердить что ты не робот

Переход на Python из R, каков эквивалент Python кадра данных?

Я знаком с держателями данных R, такими как векторы, dataframe и т.д., но вам нужно сделать некоторый анализ текста, и похоже, что у python есть хорошие настройки для этого. Мой вопрос в том, где я могу найти объяснение того, как python хранит данные.

В частности, у меня есть набор данных в файле с разделителями табуляции, где текст находится в третьем столбце, а скоринга данных, которые мне нужны, находится в 4-м столбце.

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, но не о том, как обращаться с табличными структурами.

Как бы вы предложили работать с этим для новичков-питонов?

4b9b3361

Ответ 1

Посмотрите на DataFrame объект в библиотеке pandas.

Ответ 2

Ответ г-на Уллриха на использование pandas - это самый близкий подход к кадру данных R. Тем не менее, вы можете получить очень похожие функции, используя массив numpy, при этом тип данных установлен на object, если это необходимо. Более новые версии numpy имеют свойства имени поля, аналогичные data.frame, его индексирование на самом деле несколько более мощное, чем R, и его способность содержать объекты выходит далеко за рамки того, что может сделать R.

Я использую как R, так и numpy, в зависимости от задачи. R лучше с формулами и встроенной статистикой. Код Python более удобен в обслуживании и легче подключается к другим системам.

Отредактировано: добавлено примечание, что numpy теперь имеет возможности имени поля

Ответ 3

Я не уверен, насколько хорошо это означает "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

В дополнение к Panda DataFrame вы можете использовать библиотеку rpy2 (из http://thread.gmane.org/gmane.comp.python.rpy/1344):

import array
import rpy2.robjects as ro

d = dict(x = array.array('i', [1,2]), y = array.array('i', [2,3]))
dataf = ro.r['data.frame'](**d)

Ответ 5

Один из вариантов, который я использовал в прошлом, - 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'}

Ответ 6

Эквивалент R в python равен Pandas

Вы интериментируете DataFrame, как показано ниже

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

 print df.head()