Так что в настоящее время я работаю над веб-приложением с несколькими другими людьми для клиента, и мы столкнулись с камнем преткновения. По сути, мы должны иметь возможность загружать CSV-файл в определенной компоновке — и приложение возьмет этот CSV-файл и на основе определенных столбцов и их значений выполнит требуемый алгоритм и вычисления.
Выход также будет загружаемый файл CSV. Никто из нас не имел опыта работы с CSV в Python.
Структура файла CSV выглядит следующим образом:
ID, имя, адрес, пригород, почтовый индекс, электронная почта, телефон
Мне нужно взять поля адреса и использовать их в расчете, чтобы определить, как добраться до места назначения по их конкретному адресу. Я также должен был бы напечатать определенные детали, связанные с этим человеком также.
РЕДАКТИРОВАТЬ
Итак, в основном, файл CSV будет содержать подробную информацию о сотрудниках и их соответствующую личную информацию. Наше приложение использует эту информацию и, основываясь на адресе сотрудников, прогнозирует наиболее оптимальный маршрут для них, чтобы добраться до пункта назначения.
В основном, как, черт возьми, я читаю CSV-файлы, а затем пишу алгоритм на основе определенного столбца / строки, чтобы выполнить необходимые вычисления.
Чтение .csv
легко с CSV модуль стандартной библиотеки.
Более эффективная библиотека, которая позволяет лучше манипулировать .csv
файлы панд, Вы должны сначала поиграть с этим.
Например, учитывая файл CSV:
csv = r"""col1,col2,col3,col4
bar,20150301,homer,53
foo,20150502,bart,102
barfoo,20150201,lisa,13
foobar,20150501,marge,97"""
Мы можем работать над этим с csv
модуль:
import csv # built-in no need to install
from StringIO import StringIO
with open(StringIO(csv), 'rb') as f:
reader = csv.reader(f)
for row in reader:
# Do whatever you need
И, аналогично, с пандами:
import pandas as pnd # external, installation required
# returns a dataframe, specify cols, index et cetera
df = pnd.read_csv(StringIO(csv),
header=0,
index_col=["col1", "col3"],
usecols=["col1", "col2", "col3"],
parse_dates=["col2"])
# do dirty things with it.
Других решений пока нет …