Настройка модели данных в pandas

#pandas #etl

#pandas #etl

Вопрос:

Итак, я привык к ETL базы данных. В SQL я создаю таблицу и устанавливаю длины символов, типы данных и т.д. Насколько я понимаю, pandas использует максимальную длину всего, что помещается в фрейм данных. Хорошо, если вы остаетесь на python, но мне нужно указать эти вещи явно.

Вот некоторый базовый код для работы, приветствуются указатели:

 df=pd.Dataframe()
df['ID'] = some data probably i   1
df['text'] = some text length set to max 255
  

Ответ №1:

Вот информативная статья о типах данных pandas:
https://pbpython.com/pandas_dtypes.html

Если вы хотите просмотреть типы данных вашего фрейма данных, вы можете сделать:

 df.info()
  

Вы можете явно задать типы данных, в которых вы можете игнорировать или вызывать ошибки с помощью .astype():

 df['ID'] = df['ID'].astype(int, errors='raise')
df['ID'] = df['ID'].astype(int, errors='ignore')
  

Для строк вы можете задать тип данных следующим образом:

 df['text'] = df['text'].astype('string')
  

Или, если вы используете более старую версию pandas <1.0, выполните:

 df['text'] = df['text'].astype(str)
  

Если вы хотите установить максимальную длину для своей строки, вы могли бы сделать:

 df['text'] = df['text'].str.slice(0, 255)
  

Комментарии:

1. Я не уверен, что эта последняя часть имеет смысл, это просто усекло бы все существующие данные в df['text'] столбце, вместо того, чтобы требовать, чтобы длина данных, введенных в этот столбец, не могла превышать 255 символов. Я не уверен, возможно ли последнее в pandas, но это то, о чем, я думаю, спрашивает OP (хотя я могу ошибаться).

2. @baxx согласен, но мне интересно, есть ли способ заранее установить максимальную длину столбца string

3. не afaik:/ (что не означает, что это не так), чтобы быть ясным, я не знаю ничего лучше вашего ответа, просто подумал, что стоит подчеркнуть, что это может быть ограничением (и что запрос OP может быть невозможен с использованием pandas). Если кто-то не создаст пользовательский класс или что-то, основанное на исправлениях pandas / monkey, или что-то в этом роде (что было бы интересно посмотреть)

4. Спасибо за ваши комментарии, я буду преобразовывать pandas df в geopandas, добавляя некоторую геометрию. Я экспортирую его в формат шейп-файла, и клиент установил определенные критерии для длин полей, я надеялся, что будет какой-то способ установить модель данных, как это делает Django. В противном случае мне нужно выполнить некоторые серьезные изменения за пределами python 3.x.