import csv import pandas as pd from pandas import DataFrame from PyQt6 import uic, QtWidgets from PyQt6.QtGui import QWindow from PyQt6.QtWidgets import QDialog, QApplication class TitanicCounts(QWindow): """ The main application window. """ def __init__(self): """ Load the UI and initialize its components. """ super().__init__() self._passenger_df = pd.read_csv('TitanicSurvival.csv') self.ui = uic.loadUi('titanic_counts.ui') self._initialize_class_menu() self.ui.count_text.setText('') # Connect the event handler to the menu. self.ui.class_menu.currentIndexChanged.connect( self._update_count) self.ui.show(); def _initialize_class_menu(self): """ Initialize the passenger class menu. """ self.ui.class_menu.addItem('[select passenger class]', '') self.ui.class_menu.addItem('All passengers', 'all') self.ui.class_menu.addItem('1st class passengers', '1st') self.ui.class_menu.addItem('2nd class passengers', '2nd') self.ui.class_menu.addItem('3rd class passengers', '3rd') def _update_count(self): klass = self.ui.class_menu.currentData() # Determine which passenger class. if klass == '': self.ui.count_text.setText('') return elif klass == 'all': df = self._passenger_df else: df = self._passenger_df[ self._passenger_df.passengerClass == klass ] row_count = len(df.index) self.ui.count_text.setText(f'{row_count:,d}')