Создать таблицу в excel в qt в графике
Обновлено: 21.11.2024
Бывший писатель Lifewire Тед Френч является сертифицированным специалистом Microsoft, который преподает и пишет о электронных таблицах и программах для работы с электронными таблицами.
Что нужно знать
- Введите данные, которые должны отображаться в раскрывающемся списке. Он может находиться на том же рабочем листе или на другом.
- Выберите ячейку, в которой должен появиться раскрывающийся список, а затем выберите "Данные" > "Проверка данных" > "Настройки" > "Разрешить" > "Список".
- Нажмите на поле "Источник", выберите диапазон списка и нажмите "ОК". Чтобы удалить, выберите «Данные» > «Проверка данных» > «Настройки» > «Очистить все».
В этой статье объясняется, как создавать раскрывающиеся списки или меню в Excel, чтобы ограничить данные, которые можно ввести в конкретную ячейку, заранее заданным списком записей. Использование раскрывающегося списка для проверки данных упрощает ввод данных, предотвращает ошибки и ограничивает количество местоположений для ввода данных. Инструкция распространяется на Excel 2019, 2016, 2013, 2010; и Excel для Mac.
Создать раскрывающийся список
Данные, добавленные в раскрывающийся список, могут располагаться либо на том же листе, что и список, либо на другом листе той же книги, либо в совершенно другой книге Excel. В этом руководстве мы используем список типов файлов cookie. Чтобы продолжить, введите данные в столбцы D и E, показанные на изображении ниже.
Чтобы создать раскрывающийся список:
Выберите ячейку B3, чтобы сделать ее активной.
Выберите данные.
Выберите "Проверка данных", чтобы открыть диалоговое окно "Проверка данных".
Выберите вкладку "Настройки".
В разделе Разрешить нажмите стрелку вниз.
Выберите список.
Поместите курсор в текстовое поле "Источник".
Выделите ячейки с E3 по E10 на листе, чтобы добавить данные из этого диапазона ячеек в список.
Выберите ОК. За исключением Excel для Mac, где вы выбираете Готово.
Рядом с ячейкой B3 появляется стрелка вниз, указывающая на наличие раскрывающегося списка. При выборе стрелки вниз открывается раскрывающийся список, в котором отображаются восемь имен файлов cookie.
Стрелка вниз для раскрывающегося списка видна только в том случае, если эта ячейка сделана активной.
Удалить раскрывающийся список в Excel
После завершения работы с раскрывающимся списком удалите его из ячейки листа с помощью диалогового окна проверки данных.
Если вы переместите раскрывающийся список в новое место на том же листе, нет необходимости удалять и создавать его заново. Excel динамически обновляет диапазон данных, используемых для списка.
Выберите ячейку, содержащую раскрывающийся список, который нужно удалить.
Выберите данные.
Выберите "Проверка данных", чтобы открыть диалоговое окно "Проверка данных".
Выберите вкладку "Настройки".
Выберите Очистить все, чтобы удалить раскрывающийся список.
Нажмите "ОК", чтобы закрыть диалоговое окно и вернуться к рабочему листу.
Чтобы удалить все раскрывающиеся списки на листе, установите флажок рядом с пунктом Применить эти изменения ко всем другим ячейкам с такими же настройками. Вы найдете его на вкладке «Настройки» диалогового окна «Проверка данных».
PyQt — это привязка к python инструментария виджетов с открытым исходным кодом Qt, который также функционирует как кроссплатформенная среда разработки приложений. Qt — это популярная среда C++ для написания приложений с графическим интерфейсом для всех основных настольных, мобильных и встраиваемых платформ (поддерживает Linux, Windows, MacOS, Android, iOS, Raspberry Pi и другие).
PyQt — это бесплатное программное обеспечение, разработанное и поддерживаемое английской компанией Riverbank Computing, тогда как Qt разработано финской фирмой The Qt Company.
В этом руководстве по PyQt5 вы узнаете:
Возможности PyQT
Важные особенности PyQt:
Изучите PyQt, который состоит из более чем шестисот курсов, охватывающих ряд функций, таких как
- Графические интерфейсы пользователя
- Базы данных SQL
- Наборы веб-инструментов
- Обработка XML
- Сеть
Эти функции можно комбинировать для создания расширенных пользовательских интерфейсов, а также отдельных приложений. Многие крупные компании во всех отраслях используют Qt. Некоторые примеры: LG, Mercedes, AMD, Panasonic, Harman и т. д.
Версии PyQt
PyQt доступен в двух версиях: PyQt4 и PyQt5. PyQt4 предоставляет связующий код для привязки версий 4.x и 5.x платформы Qt, в то время как PyQt5 обеспечивает привязку только для версий 5.x. В результате PyQt5 не имеет обратной совместимости с устаревшими модулями старой версии. В этом руководстве по Qt GUI PyQt5 будет использоваться для демонстрации примеров. Помимо этих двух версий,
Компания Riverbank Computing также предоставляет PyQt3D — привязку Python к платформе Qt3D. Qt3D — это платформа приложений, используемая для создания систем моделирования в реальном времени с 2D- и 3D-рендерингом.
Как установить PyQt5
В этом руководстве по PyQt5 мы увидим два способа установки PyQt:
- Использование файлов Wheel
- Сборка и установка из исходного кода
Qt (произносится мило) — это сложная система, а кодовая база PyQt содержит скомпилированный код C++ и Python под капотом. В результате это сложный процесс сборки и установки из исходного кода по сравнению с другими библиотеками Python. Однако вы можете легко установить PyQt5 с помощью колесиков.
Установка с колесами
Wheels — это новый стандартный формат упаковки и распространения Python. Проще говоря, колесо представляет собой ZIP-архив со специальным именем и расширением файла .whl. Wheels можно установить с помощью pip (менеджер пакетов Python), который по умолчанию включен в последние версии Python.
Чтобы установить PyQt5,
Шаг 1) Откройте командную строку.
Откройте командную строку или PowerShell на компьютере с Windows.
Шаг 2) Введите следующее.
Шаг 3) Установка прошла успешно.
На этом этапе этого руководства по PyQt5 будет загружен пакет PyQt5 whl (около 50 МБ) и установлен в вашей системе.
Кроме того, вы также можете загрузить двоичный файл Windows для версии Python, установленной на вашем компьютере.
После завершения перейдите к следующему разделу этого руководства по PyQt5, чтобы написать свое первое приложение с графическим интерфейсом.
Основные концепции и программы PyQt
Теперь, когда вы успешно установили PyQt5 на свой компьютер, вы готовы писать приложения для разработки графического пользовательского интерфейса Python.
Давайте начнем с простого приложения в этом руководстве по PyQt5, которое будет отображать пустое окно на вашем экране.
Запустите IDLE Python и введите следующее:
Программа 1
Сохраните его как app.py (имя не имеет значения) и нажмите F5, чтобы запустить программу. Кроме того, просто дважды щелкните сохраненный файл, чтобы запустить приложение. Если вы все сделали правильно, откроется новое окно с заголовком Guru99, как показано ниже.
Отлично! Это работает. Это немного, но достаточно, чтобы понять основы. Теперь в этом руководстве по PyQt давайте подробно рассмотрим, что делает каждая из строк вашей программы.
Этот оператор импортирует все модули, необходимые для создания графического интерфейса пользователя, в текущее пространство имен. Модуль QtWidgets содержит все основные виджеты, которые вы будете использовать в этом руководстве по Python Qt.
Здесь вы создаете объект класса QApplication. Этот шаг необходим для PyQt5; каждое приложение пользовательского интерфейса должно создавать экземпляр QApplication как своего рода точку входа в приложение. Если вы его не создадите, будут показаны ошибки.
sys.argv — это список параметров командной строки, которые вы можете передать приложению при его запуске через оболочку или при автоматизации интерфейса.
В этом примере PyQt5 вы не передавали никаких аргументов в QApplications. Поэтому вы также можете заменить его приведенным ниже кодом и даже не импортировать модуль sys.
Далее мы создаем объект класса QWidget. QWidget — это базовый класс всех объектов пользовательского интерфейса в Qt, и практически все, что вы видите в приложении, — это виджеты.Это включает в себя диалоги, тексты, кнопки, панели и так далее. Функция, позволяющая создавать сложные пользовательские интерфейсы, заключается в том, что виджеты могут быть вложенными, т. е. вы можете иметь виджет внутри виджета, который находится внутри еще одного виджета. Вы увидите это в действии в следующем разделе.
Метод resize класса QWidget позволяет задать размеры любого виджета. В данном случае вы изменили размер окна до 300 на 300 пикселей.
Здесь вы должны помнить, что виджеты могут быть вложены друг в друга, самый внешний виджет (т. е. виджет без родителя) называется окном.
Метод setWindowTitle() позволяет вам передать строку в качестве аргумента, который установит заголовок окна в соответствии с переданной вами строкой. В примере PyQt5 в строке заголовка будет отображаться Guru99.
show() просто отображает виджет на экране монитора.
Метод app.exec_() запускает цикл событий Qt/C++. Как вы знаете, PyQt в основном написан на C++ и использует механизм цикла обработки событий для реализации параллельного выполнения. app.exec_() передает управление Qt, который выходит из приложения только тогда, когда пользователь закрывает его из графического интерфейса. Вот почему ctrl+c не выйдет из приложения, как в других программах на Python. Поскольку Qt контролирует приложение, события python не обрабатываются, если мы не настроим их внутри приложения. Также обратите внимание, что в имени метода exec есть символ подчеркивания; это связано с тем, что exec() уже было ключевым словом в python, а символ подчеркивания разрешает конфликт имен.
За пустыми окнами
В предыдущем разделе вы видели, как создать базовый виджет в Qt. Пришло время сделать несколько более сложных интерфейсов, с которыми пользователи смогут по-настоящему взаимодействовать. Снова запустите IDLE и напишите следующее.
Сохраните файл как appone.py или как угодно и нажмите F5, чтобы запустить программу. Если вы не допустили ошибок, IDLE откроет новое окно с текстом и кнопкой, как показано ниже.
- После того как вы нажмете кнопку в первом окне, откроется новое окно сообщения с текстом, который вы написали.
- Теперь вы можете нажать кнопку "Скрыть подробности/Показать подробности", чтобы переключить видимость дополнительного текста.
Как видите, поскольку мы не задали заголовок окна в окне сообщения, заголовок по умолчанию был предоставлен самим python.
Теперь, когда это работает, давайте взглянем на дополнительный код, который вы добавили в предыдущий пример PyQt5.
Это импортирует еще несколько виджетов, которые вы использовали в примерах PyQt5, а именно QLabel, QPushButton и QMessageBox.
Здесь вы определили метод с именем dialog, который создает виджет окна сообщения и устанавливает некоторый текст для кнопок и других полей.
Метод диалога вызывается из основного блока программы при нажатии кнопки в определенном виджете (в данном случае это кнопка PushButton). Событие щелчка, вызванное этой кнопкой, вызывает выполнение этой функции. Такая функция в Qt называется слотом, и вы узнаете больше о сигналах и слотах в следующих параграфах.
Это основной раздел приложения, и, как и в предыдущем примере, вы начинаете с создания экземпляра QApplication, за которым следует простой виджет, то есть экземпляр QWidget.
Вы добавили в это приложение два новых виджета: QLabel и QPushButton. QLabel используется для печати нередактируемого текста или заполнителей внутри виджета, тогда как QPushButton используется для создания кнопки, на которую можно нажать.
Важно заметить, что когда вы создаете объекты label и btn, вы передаете объект окна (w) конструкторам QLabel и QPushButton. Вот как работает вложение в PyQt5. Чтобы создать виджет внутри другого виджета, вы передаете ссылку на родительский виджет в конструктор дочернего элемента.
move() используется для установки положения виджета относительно его родительского виджета. В первом случае метка будет перемещена на 100 пикселей слева и на 130 пикселей сверху окна.
Аналогичным образом кнопка будет размещена на расстоянии 110 пикселей слева и 150 пикселей от верхнего края окна. Этот пример является грубым способом создания макетов и обычно не используется в производстве; он включен сюда только в учебных целях. Qt поддерживает различные макеты, которые вы подробно увидите в следующих разделах этого руководства по PyQt.
Наконец, это пример сигналов и слотов в Qt. В приложениях с графическим интерфейсом функции выполняются на основе действий, выполняемых пользователем, таких как наведение курсора на элемент или нажатие кнопки. Эти действия называются событиями. Напомним, что метод app.exec_() передает управление циклу обработки событий Qt. Именно для этого существует цикл обработки событий: прослушивание событий и выполнение ответных действий.
Всякий раз, когда происходит событие, например, когда пользователь нажимает кнопку, соответствующий виджет Qt выдает сигнал.Эти сигналы могут быть связаны с функциями Python (например, функцией диалога в этом примере), чтобы функция выполнялась при срабатывании сигнала. Эти функции называются слотами в языке Qt.
Поэтому базовый синтаксис для запуска функции слота в ответ на сигнал от события выглядит следующим образом
Это означает, что всякий раз, когда виджет инициирует сигнал, будет выполняться функция подключенного слота. Таким образом, сигналы и слоты используются Qt для связи между объектами и облегчения повторного использования и интерактивности компонентов.
Теперь, когда вы знаете, как вкладывать виджеты и реализовывать взаимодействие с помощью сигналов и слотов, вот список полезных виджетов и других классов, которые вы можете использовать в своих приложениях PyQt.
Компоненты и виджеты
В PyQt доступно большое количество виджетов для создания приложений с графическим интерфейсом. Однако в PyQt5 произошла перестановка классов в разные модули и версии лицензий.
Поэтому крайне важно иметь общее представление о структуре PyQt5. В этом разделе вы увидите внутреннюю организацию PyQt5 и узнаете о различных модулях, библиотеках и классах API, предоставляемых PyQt5.
Структура каталогов PyQt5
Это основные модули, используемые привязкой Python к Qt, в частности PyQt5.
Виджеты PyQt5
Вот список наиболее часто используемых виджетов в PyQt5
- QLineEdit: это поле ввода, которое позволяет пользователю ввести одну строку текста.
- QRadioButton: это поле ввода с выбираемой кнопкой, похожей на переключатели в HTML.
- QComboBox: используется для отображения раскрывающегося меню со списком доступных для выбора элементов.
- QCheckBox: отображает выбираемое квадратное поле перед меткой, которая отмечена галочкой, если она выбрана, подобно переключателям.
- QMenuBar: отображает горизонтальную строку меню в верхней части окна. На эту панель можно добавлять только объекты класса QMenu. Эти объекты QMenu могут дополнительно содержать строки, объекты QAction или другие объекты QMenu.
- QToolBar: это горизонтальная полоса или панель, которую можно перемещать в пределах окна. Он может содержать кнопки и другие виджеты.
- QTab: используется для разбиения содержимого окна на несколько страниц, к которым можно получить доступ через различные вкладки в верхней части виджета. Он состоит из двух разделов: панели вкладок и страницы вкладок.
- QScrollBar: используется для создания полос прокрутки, которые позволяют пользователю прокручивать окно вверх и вниз. Он состоит из подвижного ползунка, дорожки ползунка и двух кнопок для прокрутки ползунка вверх или вниз.
- QSplitter: разделители используются для разделения содержимого окна, чтобы виджеты были правильно сгруппированы и не выглядели загроможденными. QSplitter — это один из основных обработчиков компоновки, доступных в PyQt5, который используется для разделения содержимого как по горизонтали, так и по вертикали.
- QDock: виджет док-станции представляет собой подокно с двумя свойствами:
- Его можно перемещать в пределах главного окна и
- Его можно закрепить за пределами родительского окна в другом месте на экране.
Макеты и темы
В предыдущих примерах PyQt5 вы использовали только методы move() и resize() для установки положения виджетов в графическом интерфейсе.
Однако PyQt имеет надежный механизм управления компоновкой, который можно использовать для создания расширенных пользовательских интерфейсов для приложений. В этом разделе вы узнаете о двух важных классах, которые используются в Qt для создания макетов и управления ими.
QBoxLayout
- QHBoxLayout: используется для горизонтального выравнивания дочерних виджетов.
- QVBoxLayout: используется для вертикального выравнивания дочерних виджетов.
Например, так будут выглядеть три кнопки, выровненные по QHBoxLayout.
А вот так они будут выглядеть в QVBoxLayout.
Единственная функция, которая нуждается в объяснении на данный момент, — это метод addWidget(). Он используется для вставки виджетов в макет HBox или VBox. Он также используется в других макетах, где он принимает другое количество параметров, как вы увидите в следующем разделе. Виджеты появятся внутри макета в том порядке, в котором вы их вставили.
QGridLayout
QGridLayout используется для создания интерфейсов, в которых виджеты размещаются в виде сетки (например, матрицы или двумерного массива).Чтобы вставить элементы в сетку, вы можете использовать матричное представление, чтобы определить количество строк и столбцов в сетке, а также положение этих элементов.
Например, чтобы создать сетку 3*3 (т. е. сетку с тремя строками и тремя столбцами), вы напишете следующий код:
Это будет вывод:
Метод addWidget() В макете сетки принимает следующие аргументы:
- Объект виджета, который вы хотите добавить в сетку
- Координата x объекта
- Координата Y объекта
- Промежуток строк (по умолчанию = 0)
- Количество столбцов (по умолчанию = 0)
Чтобы лучше понять это, вы можете вручную вставить каждый виджет, как показано ниже
Вот как будет выглядеть сетка:
Вы также можете передать параметры rowspan и colspan в addWidget(), чтобы охватить более одной строки или столбца.
Это создаст кнопку, которая растянется на оба столбца.
Темы
PyQt5 поставляется с некоторыми встроенными темами, которые вы можете использовать в своих приложениях. Метод setStyle(), вызываемый в экземпляре QApplication, используется для установки определенной темы для вашего приложения.
Например, добавление следующей строки кода изменит тему вашего приложения со стандартной на Fusion
Вот как предыдущий пример будет выглядеть в теме Fusion
Еще одна полезная функция для создания тем для ваших приложений – метод setPalette(). Вот код для изменения цвета различных виджетов с помощью setPalette().
Вот результат.
Чтобы использовать метод setPalette(), сначала необходимо определить палитру. Это делается путем создания объекта класса QPalette.
Обратите внимание, что класс QPalette принадлежит модулю QtGui, и для его работы вам потребуется импортировать его. После того, как вы создали объект QPalette, используйте метод setColor() для передачи имени виджета, цвет которого вы хотите изменить, и цвета, который вы хотите установить.
Это изменит цвет окна на черный. После того как вы определили свою цветовую схему, используйте функцию setPalette(), чтобы применить палитру к вашему приложению.
Это все, что вам нужно сделать, если вы хотите создать несколько базовых тем для своего приложения. PyQt также позволяет вам использовать таблицы стилей для определения внешнего вида ваших виджетов. Если вы знакомы с CSS, вы можете легко определить расширенные стили для своего приложения с помощью таблиц стилей Qt.
Я уже много говорил о том, что pandas — отличная альтернатива Excel для решения многих задач. Одним из преимуществ Excel является то, что он предлагает интуитивно понятный и мощный графический интерфейс для просмотра ваших данных. Напротив, панды + блокнот Jupyter предлагают большую программную мощь, но ограниченные возможности для графического отображения и управления представлением DataFrame.
В экосистеме Python есть несколько инструментов, призванных заполнить этот пробел. Они варьируются по сложности от простых библиотек JavaScript до сложных полнофункциональных механизмов анализа данных. Единственным общим знаменателем является то, что все они позволяют просматривать и выборочно фильтровать данные в графическом формате. С этой точки зрения они довольно сильно различаются по дизайну и функциональности.
В этой статье будут рассмотрены некоторые из этих вариантов визуализации DataFrame, чтобы дать вам представление о ландшафте и оценить, какие из них могут быть полезны для вашего процесса анализа.
Фон
В этой статье мы будем использовать образец набора данных о продажах, который мы использовали в прошлом. Вот представление данных в традиционной записной книжке:
Вот аналогичное представление в Excel с фильтром, примененным ко всем столбцам:
Это знакомое представление в Excel позволяет легко просматривать все ваши данные. Вы можете фильтровать и сортировать данные, чтобы проверять данные и углубляться в детали там, где это необходимо.Этот тип функций наиболее полезен, когда вы изучаете новый набор данных или решаете новую проблему в существующем наборе данных.
Очевидно, что это невозможно с миллионами строк данных. Однако, даже если у вас есть большие наборы данных и вы являетесь экспертом по пандам, я ожидаю, что вы все равно будете выгружать DataFrames в Excel и просматривать подмножества данных. Я знаю, что знаю.
Одна из причин, по которой я использую Excel + python, заключается в том, что специальные возможности проверки данных в Excel намного лучше, чем стандартные представления DataFrame.
Исходя из этого, давайте рассмотрим некоторые варианты воспроизведения этой простой возможности просмотра, которая есть в Excel.
Инструменты JavaScript
Самый простой подход — использовать библиотеку JavaScript, чтобы добавить интерактивности в представление DataFrame в записной книжке.
Qgrid
Первое, что мы рассмотрим, это Qgrid от Quantopian. Этот виджет блокнота Jupyter использует компонент SlickGrid для добавления интерактивности в ваш DataFrame.
После его установки вы можете отобразить версию своего DataFrame, которая поддерживает сортировку и фильтрацию данных.
Qgrid поддерживает интуитивно понятную фильтрацию с использованием различных виджетов на основе базовых типов данных. Кроме того, вы можете настроить некоторые функции рендеринга, а затем прочитать выбранные данные в DataFrame. Это довольно полезная функция.
Qgrid не выполняет никакой визуализации и не позволяет использовать выражения pandas для фильтрации и выбора данных.
В целом, Qgrid хорошо подходит для простой обработки и проверки данных.
Сводные таблицы
Следующий вариант не совсем подходит для просмотра DataFrame, но я думаю, что это действительно полезный инструмент для обобщения данных, поэтому я расскажу о нем.
Модуль pivottablejs использует библиотеку JavaScript для сводных таблиц для интерактивного сводного сведения и суммирования данных.
После установки использовать его очень просто:
В этом примере я суммировал количество покупок для каждого клиента, нажав и перетащив мышь.
Помимо основных функций суммирования, вы также можете выполнять визуализацию и статистический анализ.
Этот виджет бесполезен для фильтрации необработанного фрейма данных, но он действительно полезен для сведения и обобщения данных. Одной из приятных функций является то, что вы можете фильтровать данные после создания сводной таблицы.
Другим недостатком этого виджета является то, что он не использует функции поворота или выбора панд. Тем не менее, pivottablejs — действительно полезный инструмент для быстрого сводного анализа и сводки.
Приложения для анализа данных
Вторая категория приложений с графическим интерфейсом — это полноценные приложения, обычно использующие веб-сервер, такой как Flask, или отдельное приложение на основе Qt. Эти приложения различаются по сложности и возможностям: от простых табличных представлений и возможностей построения графиков до надежного статистического анализа. Одним из уникальных аспектов этих инструментов является то, что они тесно интегрированы с пандами, поэтому вы можете использовать код панд для фильтрации данных и взаимодействия с этими приложениями.
Графический интерфейс Панды
Первое приложение, о котором я расскажу, — это PandasGUI. Это приложение уникально тем, что представляет собой автономное приложение, созданное с помощью Qt, которое можно вызывать из блокнота Jupyter.
Используя те же данные из предыдущего примера, импортируйте команду show:
Если все работает, вы получите отдельный графический интерфейс. Поскольку это отдельное приложение, вы можете немного настроить представление. Например, я переместил несколько вкладок, чтобы показать больше возможностей на одной странице.
В этом примере я фильтрую данные, используя синтаксис запроса pandas, чтобы показать одного клиента и количество покупок > 15.
PandasGUI интегрируется с Plotly и позволяет также создавать визуализации. Вот пример гистограммы цены за единицу:
Одна приятная возможность PandasGUI заключается в том, что фильтры действуют для DataFrame на всех вкладках. Вы можете использовать эту функцию, чтобы попробовать разные представления данных при построении или преобразовании данных.
Другая возможность, которую имеет PandasGUI, заключается в том, что вы можете изменить форму данных, повернув или расплавив их. Вот сводная информация о продажах в разбивке по SKU .
Вот как выглядит результирующее представление:
PandasGUI — впечатляющее приложение. Мне нравится, как он отслеживает все изменения и является лишь небольшой оберткой над стандартной функциональностью панд. Программа находится в активной разработке, поэтому я буду внимательно следить за ее развитием и улучшением со временем.
Если вам интересно увидеть больше функций, в этом видео показан еще один хороший обзор.
Табло
Этот получает награду за имя, которое заставляет меня улыбаться каждый раз, когда я его вижу. Надеюсь, большой инструмент визуализации для коммерциализации не слишком расстроится из-за сходства!
В любом случае, Tabloo использует серверную часть Flask, чтобы предоставить простой инструмент визуализации для DataFrames, а также возможности построения графиков, аналогичные PandasGUI.
Использование Tabloo очень похоже на PandasGUI:
Tabloo использует синтаксис запросов, подобный PandasGUI, но я не мог понять, как добавить несколько фильтров, как в PandasGUI.
Наконец, Tabloo также имеет некоторые базовые функции построения графиков, но они не так богаты, как PandasGUI.
Tabloo имеет несколько интересных концепций, но не обладает такими широкими возможностями, как PandasGUI. Он давно не обновлялся, поэтому может быть бездействующим, но я хотел включить его для максимально полного обзора.
История
Последнее приложение — Dtale, и оно является самым сложным из возможных вариантов. Архитектура Dtale похожа на Tabloo тем, что использует серверную часть Flask, но также включает надежный интерфейс React. Dtale — зрелый проект с большим количеством документации и большим количеством функций. В этом посте я расскажу лишь о небольшом наборе возможностей.
Начало работы с Dtale аналогично другим приложениям этой категории:
Это представление дает вам намек на то, что Dtale — это гораздо больше, чем средство просмотра DataFrame. Это очень надежный набор статистических инструментов. Я не могу перечислить здесь все расширенные функции, но вот краткий пример, показывающий гистограмму столбца цены за единицу:
Одна из особенностей, которые мне очень нравятся в Dtale, заключается в том, что вы можете экспортировать код и посмотреть, что он делает. Это действительно мощная функция, которая отличает решение Excel + Python от оригинального Excel.
Вот пример экспорта кода из визуализации выше.
Что касается фильтрации данных, Dtale также позволяет выполнять форматирование данных. В приведенном ниже примере я отформатировал столбцы валюты и даты, чтобы их было немного легче читать.
Как я уже говорил, Dtale — это надежный инструмент с широкими возможностями. Если вам интересно, я рекомендую вам проверить это и посмотреть, работает ли это для вас.
Один аспект, на который следует обратить внимание, заключается в том, что вы можете столкнуться с проблемами брандмауэра Windows при попытке запустить Dtale. На заблокированной корпоративной машине это может быть проблемой. Дополнительные сведения о различных вариантах установки см. в документации.
Независимо от этой проблемы, я думаю, что Dtale определенно стоит попробовать, даже если это просто для того, чтобы увидеть все доступные вам функции.
Средства просмотра переменных IDE
Если вы занимаетесь разработкой в таких инструментах, как VS Code или Spyder, у вас есть доступ к простому средству просмотра переменных DataFrame.
Например, вот представление нашего DataFrame с использованием обозревателя переменных Spyder:
Это средство просмотра очень удобно, если вы используете Spyder. У вас нет возможности фильтровать данные в графическом интерфейсе, но вы можете изменить порядок сортировки.
VS Code имеет аналогичную функцию. Вы можете просмотреть мою предыдущую статью, если хотите узнать, как использовать VS Code + Python.
В этом простом представлении показано, как можно фильтровать данные:
Обе эти функции полезны, если вы уже работаете в коде Spyder или VS. Однако они не могут сравниться с Dtale, когда речь идет о сложной фильтрации или сложном анализе данных.
Я надеюсь, что VS Code продолжит улучшать средство просмотра DataFrame.Похоже, что в наши дни VS Code может делать практически все, поэтому мне будет интересно посмотреть, как будет развиваться эта функция.
Excel
Недавно большой интерес вызвала статья, описывающая, как использовать блокноты Jupyter в Excel. Если мы хотим объединить преимущества Excel и Pandas, может быть, это хороший вариант?
PyXLL
В ранее упомянутой статье требуется пакет PyXLL, который является коммерческим приложением. У меня нет проблем с компанией, разрабатывающей коммерческий продукт. Я думаю, что это критически важно для успеха экосистемы Python. Однако платный вариант означает, что вам, вероятно, потребуется больше бай-ина, чтобы внедрить его в свою организацию. К счастью, вы можете попробовать его бесплатно в течение 30 дней и посмотреть, подходит ли он вам.
Отбросив это предостережение, давайте попробуем это на нашем примере набора данных:
Настоящая сила заключается в том, что вы можете использовать записную книжку рядом с Excel и использовать магические команды jupyter для обмена данными между записной книжкой и Excel. В этом примере использование %xl_set df поместит DataFrame непосредственно в файл Excel. После этого вы сможете работать с Excel в гибридном режиме.
PyXLL имеет множество различных возможностей для интеграции Python и Excel, поэтому его сложно сравнивать с ранее обсуждаемыми платформами. В целом, мне нравится идея использования визуальных компонентов Excel и возможностей программирования на Python. Если вам интересно такое сочетание Python и Excel, обязательно попробуйте PyXLL.
xlwings
xlwings существует уже некоторое время, на самом деле, я написал старую статью о xlwings в 2016 году. xlwings похож на PyXLL в том, что он также поддерживается коммерческой компанией. Однако есть версия для сообщества с открытым исходным кодом, а также платная версия Pro. В данном примере используется версия сообщества. Полный пакет Pro xlwings имеет несколько различных функций для интеграции Excel и Python.
Хотя xlwings не интегрируется напрямую с блокнотом Jupyter, вы можете в режиме реального времени заполнить электронную таблицу Excel кадром данных и использовать Excel для анализа.
Вот краткий фрагмент кода:
Этот код откроет новый экземпляр Excel и поместит df в ячейку A1. Вот как это выглядит:
Это может быть быстрый способ вместо сохранения и повторного открытия Excel для просмотра ваших данных. На самом деле это просто сделать, поэтому я, вероятно, попробую еще раз в своем собственном анализе данных.
Обзор
Эта статья охватывает много вопросов. Вот изображение, которое обобщает все варианты, которые мы обсуждали.
Есть ли одно решение, подходящее для всех? Я так не думаю. Одной из причин, по которой я хотел написать эту статью, было то, что я хотел вызвать дискуссию об «оптимальном» решении. Я надеюсь, что вы воспользуетесь этой возможностью, чтобы проверить некоторые из этих решений и посмотреть, подходят ли они для вашего процесса анализа. Каждое из этих решений решает различные аспекты проблемы по-разному. Я подозреваю, что пользователи, скорее всего, будут объединять несколько из них — в зависимости от проблемы, которую они пытаются решить.
Я предсказываю, что мы продолжим наблюдать эволюцию в этой сфере. Я надеюсь, что мы сможем найти решение, которое использует некоторые интерактивные интуитивно понятные аспекты Excel, а также мощь и прозрачность, связанные с использованием Python и pandas для манипулирования данными. С присоединением Гвидо ван Россума к Microsoft, может быть, мы увидим больше активности в этой области?
Я не знаю, где мы в конечном итоге приземлимся, но я рад видеть, что развивается сообщество. Если я что-то пропустил или у вас есть мысли, дайте мне знать в комментариях. Это всегда приветствуется.
Новичок
Дата регистрации июль 2012 г. Местоположение Великобритания Сообщений 17 Благодарностей 13 продуктов Qt Платформы
Создать таблицу и редактировать ячейки с помощью всплывающего диалогового окна?
Я студент и новичок в Qt. Мне очень срочно нужна ваша помощь.
В моем приложении мне нужно создать таблицу. Каждая ячейка таблицы содержит несколько значений (по сути структуру). Функции, которые мне нужны, аналогичны MS Excel, где, если мы щелкнем левой кнопкой мыши по ячейке, появится небольшое всплывающее окно (прикрепленное изображение), которое позволяет установить свойства ячейки.
В основном мне нужна таблица, и когда я нажимаю на ячейку, появляется диалоговое окно. В диалоговом окне будут показаны текущие установленные значения (структуры). Затем я могу изменить значения и также отправить.
Новичок
Дата регистрации июль 2012 г. Местоположение Великобритания Сообщений 17 Благодарностей 13 продуктов Qt Платформы
Требование состоит в том, что мне нужна таблица. Каждая ячейка таблицы содержит структуру, которая в основном содержит свойство символа (глиф). Каждое свойство символов доступно для редактирования. Пожалуйста, смотрите прикрепленное изображение.
Теперь я создал собственный QGraphicsView, в котором я могу щелкнуть и отредактировать символ. Поэтому мне нужно, чтобы эти представления отображались в таблице. Любые предложения о том, как встроить QGraphicsView вместо элемента QTableWidget?
(Примечание: я буду рад поблагодарить тех, кто поможет мне в моем итоговом отчете)
Гуру
Дата регистрации: март 2009 г. Местонахождение: Брисбен, Австралия Сообщений: 7 734 Спасибо: 13 Поблагодарили: 1 610 раз, 1 537 сообщений
Когда ячейка не редактируется, я бы предложил преобразовать текущее состояние глифа в растровое изображение и установить его в ячейке для отображения. Вы можете использовать QStyledItemDelegate, чтобы предоставить пользовательский редактор для ячейки. Вам нужно будет удерживать QGraphicsScene для каждого глифа, чтобы редактор мог получить к нему доступ при вызове.
Читайте также: