Учитывая, что некоторый массив анализируется из CSV следующим образом (не беспокойтесь о синтаксическом анализе, просто рассмотрите этот массив как начальную точку)

Сказать: {{Х0}}

Так что первый индекс - это имена столбцов, что является лучшим способом преобразовать это в таблицу. Я думал об использовании numpy и pandas для создания фрейма данных, но какой самый эффективный способ преобразования памяти и времени можно сделать для этого? Затем я планирую провести анализ данных и создать новые функции. Есть ли что-то в стандартной библиотеке Python, которую я могу использовать, или pandas - лучший способ сделать это? Если бы я использовал только встроенные функции, как бы я поступил? В конце мне нужно объединить функции обратно в исходную форму массива.

-1
Safder 30 Июн 2019 в 21:47

3 ответа

Лучший ответ

Только встроенные (кроме pprint для печати):

import pprint

data = [
    "name,age,city",
    "tom,12,new york",
    "john, 10, los angeles",
]
cols = None
out_data = []
for line in data:
    line = line.split(",")

    # We don't know the columns yet; must be the first line
    if not cols:
        cols = line
        continue
    out_data.append(dict(zip(cols, line)))

pprint.pprint(out_data)

Используя csv стандартный модуль:

import csv
import io
import pprint

data = [
    "name,age,city",
    "tom,12,new york",
    "john, 10, los angeles",
]

reader = csv.DictReader(io.StringIO('\n'.join(data)))
out_data = list(reader)

pprint.pprint(out_data)

Оба подхода дают ожидаемый результат:

[{'age': '12', 'city': 'new york', 'name': 'tom'},
 {'age': ' 10', 'city': ' los angeles', 'name': 'john'}]
4
AKX 30 Июн 2019 в 19:09

Панды - это путь. Вам не нужно разбирать значения. Вместо этого вы можете просто использовать read_csv функциональность, чтобы создайте фрейм данных из вашего CSV-файла и выполните генерацию / извлечение функции или очистку данных на этом фрейме. Стандартная библиотека Python не предлагает / не должна предлагать такую возможность из коробки.

Чтобы собрать ваши значения в виде списка Python в конце дня, используйте df.values.tolist().

pandas имеет C-код в критических секциях, что ускоряет его на несколько порядков.

2
Sıddık Açıl 30 Июн 2019 в 19:07

Я не могу говорить ради эффективности, но поскольку простой способ преобразовать его в таблицу с использованием панд будет лучшим вариантом. Я бы использовал pandas.read_csv для этого.

1
Crosby Burdon 30 Июн 2019 в 18:58