“большие данные” работы потоков с использованием панды


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

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

hdfstore

моя первая мысль-использовать для хранения больших наборов данных на диске и извлекать только кусочки мне нужно в таблицы данных для анализа. другие упомянули mongodb в качестве более простой в использовании альтернативой. мой вопрос заключается в следующем:

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

  • loading flat files into a permanent, on-disk database structure
  • querying that database to retrieve data to feed into a pandas data structure
  • updating the database after manipulating pieces in pandas
  • реальные примеры будут высоко ценится, особенно от тех, кто использует панд на "большие данные".

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

  • iteratively import a large flat-file and store it in a permanent, on-disk database structure. these files are typically too large to fit in memory.
  • in order to use pandas, i would like to read subsets of this data (usually just a few columns at a time) that can fit in memory.
  • i would create new columns by performing various operations on the selected columns.
  • i would then have to append these new columns into the database structure.
  • я пытаюсь найти лучшего способа выполнения этих шагов. читая ссылки про панд и pytables кажется, что добавляя новый столбец может стать проблемой.

    редактирование -- отвечая на вопросы джеффа в частности:

  • i am building consumer credit risk models. the kinds of data include phone, ssn and address characteristics; property values; derogatory information like criminal records, bankruptcies, etc... the datasets i use every day have nearly 1,000 to 2,000 fields on average of mixed data types: continuous, nominal and ordinal variables of both numeric and character data. i rarely append rows, but i do perform many operations that create new columns.
  • typical operations involve combining several columns using conditional logic into a new, compound column. for example, if var1 > 2 then newvar = 'a' elif var2 = 4 then newvar = 'b'. the result of these operations is a new column for every record in my dataset.
  • finally, i would like to append these new columns into the on-disk data structure. i would repeat step 2, exploring the data with crosstabs and descriptive statistics trying to find interesting, intuitive relationships to model.
  • a typical project file is usually about 1gb. files are organized into such a manner where a row consists of a record of consumer data. each row has the same number of columns for every record. this will always be the case.
  • it's pretty rare that i would subset by rows when creating a new column. however, it's pretty common for me to subset on rows when creating reports or generating descriptive statistics. for example, i might want to create a simple frequency for a specific line of business, say retail credit cards. to do this, i would select only those records where the line of business = retail in addition to whichever columns i want to report on. when creating new columns, however, i would pull all rows of data and only the columns i need for the operations.
  • the modeling process requires that i analyze every column, look for interesting relationships with some outcome variable, and create new compound columns that describe those relationships. the columns that i explore are usually done in small sets. for example, i will focus on a set of say 20 columns just dealing with property values and observe how they relate to defaulting on a loan. once those are explored and new columns are created, i then move on to another group of columns, say college education, and repeat the process. what i'm doing is creating candidate variables that explain the relationship between my data and some outcome. at the very end of this process, i apply some learning techniques that create an equation out of those compound columns.
  • это редкое, что я бы когда-нибудь добавить строки в наборе данных. я почти всегда будут создавать новые столбцы (переменные или функции в статистике/машинного обучения просторечии).