«Большие данные» рабочие потоки с использованием панд

Я пытался найти ответ на этот вопрос в течение многих месяцев, изучая панд. Я использую SAS для своей повседневной работы, и он отлично подходит для поддержки из ядра. Однако SAS ужасен как часть программного обеспечения по многим другим причинам.

Однажды я надеюсь заменить свое использование SAS на python и pandas, но в настоящее время мне не хватает неосновного рабочего процесса для больших наборов данных. Я говорю не о «больших данных», которые требуют распределенной сети, а о файлах, слишком больших, чтобы уместиться в памяти, но достаточно маленьких, чтобы уместиться на жестком диске.

Моя первая мысль заключается в использованииHDFStore хранить большие наборы данных на диске и извлекать только те фрагменты, которые мне нужны, в рамки данных для анализа. Другие упоминали MongoDB как более простую альтернативу. У меня вопрос такой:

Каковы лучшие рабочие процессы для достижения следующих целей:

Загрузка плоских файлов в постоянную структуру базы данных на дискеЗапрос этой базы данных для извлечения данных для подачи в структуру данных PandasОбновление базы данных после манипулирования частями в пандах

Примеры из реальной жизни будут высоко оценены, особенно от тех, кто использует панд на «больших данных».

Редактировать - пример того, как я хотел бы, чтобы это работало:

Итеративный импорт большого плоского файла и сохранение его в постоянной структуре базы данных на диске. Эти файлы обычно слишком велики, чтобы поместиться в памяти.Чтобы использовать Панд, я хотел бы прочитать подмножества этих данных (обычно всего несколько столбцов за раз), которые могут поместиться в памяти.Я бы создал новые столбцы, выполняя различные операции с выбранными столбцами.Затем я должен был бы добавить эти новые столбцы в структуру базы данных.

Я пытаюсь найти наилучший способ выполнения этих шагов. Читая ссылки о пандах и таблицах, кажется, что добавление нового столбца может быть проблемой.

Изменить - Отвечая на вопросы Джеффа конкретно:

Я строю модели потребительского кредитного риска. Типы данных включают телефон, SSN и адресные характеристики; имущественные ценности; уничижительная информация, такая как судимости, банкротства и т. д. Наборы данных, которые я использую каждый день, содержат в среднем от 1000 до 2000 полей смешанных типов данных: непрерывные, номинальные и порядковые переменные числовых и символьных данных. Я редко добавляю строки, но я выполняю много операций, которые создают новые столбцы.Типичные операции включают объединение нескольких столбцов с использованием условной логики в новый составной столбец. Например,if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B', Результатом этих операций является новый столбец для каждой записи в моем наборе данных.Наконец, я хотел бы добавить эти новые столбцы в структуру данных на диске. Я бы повторил шаг 2, изучая данные с помощью кросс-таблиц и описательной статистики, пытаясь найти интересные, интуитивно понятные связи для моделирования.Типичный файл проекта обычно составляет около 1 ГБ. Файлы организованы таким образом, что строка состоит из записи данных потребителя. Каждая строка имеет одинаковое количество столбцов для каждой записи. Это всегда будет так.Довольно редко, когда я создаю новый столбец, я добавляю его по строкам. Тем не менее, для меня довольно распространено подмножество строк при создании отчетов или создании описательной статистики. Например, я мог бы хотеть создать простую частоту для определенной области бизнеса, скажем, Розничные кредитные карты. Для этого я бы выбрал только те записи, где бизнес = розничная торговля, в дополнение к тем столбцам, о которых я хочу сообщить. Однако при создании новых столбцов я извлекаю все строки данных и только те столбцы, которые мне нужны для операций.Процесс моделирования требует, чтобы я проанализировал каждый столбец, посмотрел на интересные отношения с некоторой переменной результата и создал новые составные столбцы, которые описывают эти отношения. Столбцы, которые я исследую, обычно делаются небольшими наборами. Например, я сконцентрируюсь на наборе, скажем, 20 столбцов, которые имеют дело только со значениями собственности, и посмотрю, как они относятся к дефолту по кредиту. После их изучения и создания новых столбцов я перехожу к другой группе столбцов, например, «Образование в колледже», и повторяю этот процесс. Я занимаюсь созданием переменных-кандидатов, которые объясняют связь между моими данными и некоторым результатом. В самом конце этого процесса я применяю некоторые методы обучения, которые создают уравнение из этих составных столбцов.

Редко когда я добавляю строки в набор данных. Я почти всегда буду создавать новые столбцы (переменные или функции в статистике / на языке машинного обучения).