@acroloid

Как ускорить работу с большими таблицами данных?

Здравствуйте, я не программист и просто изучаю python для автоматизации некоторых своих рабочих задач.
У меня есть данные в формате txt, делитель - табуляция, около 200 тысяч строк и около 200 столбцов.
Хотел написать небольшую программу для удобного поиска по таблице для некоторой автоматизации работы. Набросал гуи на Pyqt, данные подгружаю через pandas и если pandas загружает таблицу за 12 сек, что в целом терпимо, то загрузка из pandas в модель данных Qt уже занимает кучу времени, кушает более 6 гб ОЗУ и причем после чего все падает. Похоже, что Qt не способна обрабатывать такое количество данных. (на маленьком количестве данных все работает просто отлично)
Какие есть способы загрузки и работы с такой таблицей данных? Может предварительно перевести таблицу в SQL? Мне нужно просто осуществлять поиск (точнее - фильтрацию) данных по отдельным столбцами и при необходимости формировать отчет по отобранных значениям.
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Everything_is_bad
Да, в sql базу, плюс разобраться с индексами
Ответ написан
Комментировать
Maksim_64
@Maksim_64
Data Analyst
1. Сделай дашборд plotly + dash, он может работать, как с базой данных, так и pandas фреймом. Там же есть объект таблица для красивого вывода, + огромное количество графиков, пользователь будет вводить, что он хочет вывести, ты будешь делать запрос к фрейму и выводить. Все доки в принципе ориентированы на работу с фреймами, бд как пример берется, возможности огромные. plotly+dash

2. Есть в принципе отдельная библиотека pandasgui Функционал слабенький, но фильтрацию поддерживает.

Не знаю поможет ли это тебе в твоей проблеме, но раз речь в том числе и о скорости pandas то упомянуть об этом следует, пару недель как nvidia выпустила расширение, которое очень серьезно ускоряет pandas (GPU acceleration). читать здесь
Ответ написан
Vindicar
@Vindicar
RTFM!
Я подозреваю, ты пытаешься на каждую строку данных создавать объект PyQT. Такого издевательства оно не переживёт.
Вместо этого при прокрутке определи первую и последнюю видимую позицию в данных, очисти текущее содержимое своего окна с данными, и выведи только видимую часть данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы