#python #pandas #sas
Вопрос:
У меня есть файл SAS, который содержит примерно 112 миллионов строк. На самом деле у меня нет доступа к программному обеспечению SAS, поэтому мне нужно поместить эти данные, предпочтительно, в фрейм данных pandas или что-то очень похожее в семействе python. Я просто не знаю, как это сделать эффективно. т. е. просто выполнение df = pd.read_sas(filename.sas7bdat)
занимает несколько часов. Я могу сделать размеры кусков, но это на самом деле не решает основную проблему. Есть ли какой-нибудь более быстрый способ передать это пандам, или мне просто нужно съесть многочасовое ожидание? Кроме того, даже когда я прочитал файл, я почти ничего не могу с ним сделать, потому что повторение df также занимает целую вечность. Обычно это просто приводит к сбою ядра Jupyter. Заранее спасибо за любые советы в этом отношении!
Ответ №1:
Что касается первой части, я думаю, что здесь не так много нужно сделать, поскольку read_sas
возможности ограничены.
Для второй части 1. повторение вручную по строкам медленно, а не философия панд. По возможности используйте векторные операции. 2. Попробуйте изучить специализированные решения для больших наборов данных, такие как dask. Также прочитайте, как масштабироваться до больших массивов данных.
Комментарии:
1. Ценю ваш ответ. Знаете ли вы о том, как хранить pandas df для повторного использования? В принципе, мне не нужно читать один и тот же массивный файл каждый раз, когда я перезапускаю ядро, и я мог бы просто подготовить df к работе. Спасибо
2. Я никогда не сравнивал себя, но вы можете прочитать это
Ответ №2:
Возможно, вам не нужен весь ваш файл, чтобы работать над ним, поэтому вы можете взять 10%. Вы также можете изменить типы переменных, чтобы уменьшить объем их памяти.
- если вы хотите сохранить df и повторно использовать его вместо повторного импорта всего файла каждый раз, когда вы хотите работать с ним, вы можете сохранить его как файл рассола (.pkl) и повторно открыть его с помощью
pandas.read_pickle