Как профилировать большие наборы данных с помощью профилирования Pandas?
Данные не идеально чисты, но используются без проблем с пандами. Библиотека панд предоставляет множество чрезвычайно полезных функций для EDA.
Но когда я использую профилирование для больших данных, то есть 100 миллионов записей с 10 столбцами, считывая их из таблицы базы данных, оно не завершается, и на моем ноутбуке не хватает памяти, размер данных в csv составляет около 6 ГБ, а моя оперативная память - 14 ГБ моего простоя около 3 - 4 ГБ.
df = pd.read_sql_query("select * from table", conn_params)
profile = pandas.profiling.ProfileReport(df)
profile.to_file(outputfile="myoutput.html")
Я также попытался с check_recoded = False вариант, а также. Но это не помогает в профилировании полностью. Есть ли способ разбить на части и прочитать данные и, наконец, создать сводный отчет в целом? ИЛИ любой другой способ использовать эту функцию с большим набором данных.
5 ответов
Начиная с версии 2.4
вы можете использовать минимальный режим, который отключает дорогостоящие вычисления (такие как корреляции и динамическое объединение):
from pandas_profiling import ProfileReport
profile = ProfileReport(df, minimal=True)
profile.to_file(output_file="output.html")
Синтаксис отключения вычисления корреляций (тем самым значительно сокращая вычисления) сильно изменился между pandas-profiling=1.4
и текущая (бета-) версия pandas-profiling=2.0
на следующее:
profile = df.profile_report(correlations={
"pearson": False,
"spearman": False,
"kendall": False,
"phi_k": False,
"cramers": False,
"recoded":False,}
)
Кроме того, вы можете сократить количество выполняемых вычислений, отключив вычисление интервалов для построения гистограмм.
profile = df.profile_report(plot={'histogram': {'bins': None}}
Пробовали ли вы использовать приведенную ниже опцию, так как при выполнении корреляционного анализа больших полей со свободным текстом с использованием профилирования панд это может вызвать проблему?
df = pd.read_sql_query("select * from table", conn_params)
profile = pandas.profiling.ProfileReport(df, , check_correlation = False)
Пожалуйста, обратитесь к ссылке ниже Github для более подробной информации: https://github.com/pandas-profiling/pandas-profiling/issues/84
Другой вариант — уменьшить данные.
Один вариант может быть достигнут с
sample
:
df.sample(number)
Подробнее о документации pandas .
Возможность отключить проверку корреляции была добавлена с реализацией проблемы #43, которая не является частью последней версии pandas-profiling (1.4), доступной в PyPI. Это было реализовано после и будет доступно, я думаю, в следующей версии. Между тем, если вам это действительно нужно, вы можете скачать текущую версию с github и использовать ее, например, добавив в свою PYTHONPATH.
! / Bin/ ш
PROF_DIR="$HOME/Git/ панды профилирование /"
export PYTHONPATH = "$ PYTHONPATH: $ PROF_DIR"
тетрадь Jupyter