Работа с огромными данными

Довольно часто, особенно в крупных компаниях, встречаются наборы данных, которые уже не помещаются в памяти компьютера, или, если вы выполняете какие-либо вычисления, вычисления занимают так много времени, что вам становится скучно. Это означает, что мы должны найти способы работы с данными, чтобы сделать их либо небольшими по объему памяти, либо сделать выборку данных, так чтобы у вас было подмножество, часто бывает оправданным просто взять выборку, и эта выборка является репрезентативной для всех больших данных, а затем произвести вычисления, сделать науку о данных на ней.
Мы импортируем Pandas и добавим наши данные в датафрейм.

import pandas as pd
df = pd.read_csv("data/housing.csv")
df.head(5)
Вход в полноэкранный режим Выход из полноэкранного режима

Для изучения объема памяти наших загруженных данных:

df.memory_usage(deep=True)

Войти в полноэкранный режим Выйти из полноэкранного режима


Объявление deep=True потому что:
Отпечаток памяти столбцов объектного dtype игнорируется по умолчанию, Мы не хотим, чтобы в нашей ситуации элементы игнорировались.
Проверяем dtype столбцов:

df.dtypes
Вход в полноэкранный режим Выход из полноэкранного режима


Обратите внимание на dtype колонки ocean_proximity,
Всегда помните, что строки могут занимать много места в памяти по сравнению с числами, которые особенно эффективно справляются с этой задачей.
Мы переопределим наш тип данных ocean_proximity на специфический для pandas тип данных categorical.

df["ocean_proximity"] = df["ocean_proximity"].astype("category")
Вход в полноэкранный режим Выйти из полноэкранного режима

Это улучшает использование памяти,
Проверим память

df.memory_usage(deep=True)
Войти в полноэкранный режим Выход из полноэкранного режима


Ваоооооо!!! Вы можете видеть, что она уменьшилась более чем в два раза.
Таким образом, вы можете сделать свой DataFrame более оптимальным простым способом.
Однако проблема с этой техникой заключается в том, что даже после изменения памяти, объем памяти все равно остается значительным, поскольку данные загружаются в нашу память.
Во время процесса загрузки мы также можем изменить тип данных

df_columns = pd.read_csv("data/housing.csv", usecols=["longitude", "latitude", "ocean_proximity"])
Войти в полноэкранный режим Выйти из полноэкранного режима

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

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

df_columns = pd.read_csv("data/housing.csv", usecols=["longitude", "latitude", "ocean_proximity"])
Войти в полноэкранный режим Выйти из полноэкранного режима

Это еще один прекрасный метод экономии места при загрузке материала.

Иногда проблема не только в загрузке данных; иногда она связана с самим вычислением, поскольку у нас есть дорогостоящая функция. В таких случаях нам нужно сделать выборку данных, что pandas облегчает нам задачу, поскольку для каждого датафрейма доступен метод sample.

У нас есть случайное состояние, что очень важно, если вы хотите воспроизвести свой анализ и передать его другому коллеге или специалисту по анализу данных. Это действительно приятная вещь, к которой нужно привыкнуть.

df_columns.sample(100, random_state=42)
Вход в полноэкранный режим Выйти из полноэкранного режима

но если вы хотите повторить что-то, вы должны убедиться, что ваш случайный процесс можно использовать повторно.

random_state = 42
df_columns.sample(100, random_state=random_state)
Войти в полноэкранный режим Выход из полноэкранного режима

Надеюсь, вы поняли, как загружать данные более эффективно и с меньшим количеством элементов.
Увидимся в следующий раз!!!

Оцените статью
devanswers.ru
Добавить комментарий