Код для реализации такого интерфейса.

Файл mainwindow.py

import sys
import os
import PySide6
from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtWebChannel import QWebChannel
from PySide6.QtCore import Slot
from mainwindow import Ui_MainWindow
import folium
from folium import template
import io
import pandas as pd

dirname = os.path.dirname(PySide6.__file__)
plugin_path = os.path.join(dirname, 'plugins', 'platforms')
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path


class BridgeFolium(folium.MacroElement):
    _template = template.Template(
        """
        {% macro script(this, kwargs) %}
        var mainWindow;
        
        // Ждём загрузки страницы
        document.addEventListener('DOMContentLoaded', function() {
            // Создаём WebChannel
            new QWebChannel(qt.webChannelTransport, function(channel) {
                mainWindow = channel.objects.mainWindow;
            });
            
            // Ждём загрузки карты Leaflet
            setTimeout(function() {
                // Добавляем обработчик клика
                {{this._parent.get_name()}}.on('click', function(e) {
                    var lat = e.latlng.lat;
                    var lng = e.latlng.lng;
                    
                    if (mainWindow) {
                        mainWindow.receive_coordinates(lat, lng);
                    }
                });
            }, 1000);
        });
               
        {% endmacro %}
            """
    )


class ClickableMarker(folium.Marker):
    _template = template.Template(
        """
        {% macro script(this, kwargs) %}
            var {{ this.get_name() }} = L.marker(
                {{ this.location|tojson }},
                {{ this.options|tojavascript }}
            ).addTo({{ this._parent.get_name() }}).on('click', (e) => {
                var lat = e.latlng.lat;
                var lng = e.latlng.lng;
                
                if (mainWindow) {
                    mainWindow.marker_clicked(lat, lng, {{ this.options|tojavascript }}.id);
                }
            });
        {% endmacro %}
        """
    )


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.df = pd.read_csv("./data.csv")

        self.ui.cmbPopulation.addItem('50000-100000', (50000, 100000))
        self.ui.cmbPopulation.addItem('100000-500000', (100001, 500000))
        self.ui.cmbPopulation.addItem('500000-1млн.', (500001, 1000000))
        self.ui.cmbPopulation.addItem('от 1млн.', (1000001, 100000000))
        self.ui.cmbPopulation.currentIndexChanged.connect(self.show_map)

        self.show_map()

    @Slot(float, float)
    def receive_coordinates(self, lat, lng):
        print(lat, lng)

    @Slot(float, float, int)
    def marker_clicked(self, lat, lng, _id):
        city = self.df[self.df.id == _id].iloc[0]
        self.ui.edtCity.setText(city.settlement)
        self.ui.edtInfo.setText(f"""
Население: {city.population}<br>
Муниципалитет: {city.municipality}<br>
Регион: {city.region}
        """.strip())
        

    def show_map(self):
        # создание объекты карты
        m = folium.Map(
            location=[52.286387, 104.280660],
            zoom_start=11,
            tiles="CartoDB Voyager",
            attributionControl=0
        )
        m.add_child(BridgeFolium())

        # Добавляем JavaScript в HTML-код карты
        m.get_root().html.add_child(folium.Element("""<script src="qrc:///qtwebchannel/qwebchannel.js"></script>"""))
        self.channel = QWebChannel()
        self.channel.registerObject("mainWindow", self)
        self.ui.web.page().setWebChannel(self.channel)

        ###
        left, right = self.ui.cmbPopulation.currentData()
        cities = self.df.loc[(left <= self.df.population) & (self.df.population <=right)]

        sw = cities[['latitude_dd', 'longitude_dd']].min().values.tolist()
        ne = cities[['latitude_dd', 'longitude_dd']].max().values.tolist()
        for city in cities.itertuples():
            ClickableMarker(
                location=[city.latitude_dd, city.longitude_dd],
                id=city.id,
                icon=folium.Icon(icon="cat", prefix='fa')
            ).add_to(m)

        m.fit_bounds([sw, ne])

        ###

        # подключение карты к интерфейсу
        m_data = io.BytesIO()
        m.save(m_data, close_file=False)
        self.ui.web.setHtml(m_data.getvalue().decode())



if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    sys.exit(app.exec())

код файла интерфейса mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>827</width>
    <height>541</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QGridLayout" name="gridLayout">
    <item row="0" column="1">
     <widget class="QComboBox" name="cmbPopulation"/>
    </item>
    <item row="1" column="0" colspan="2">
     <widget class="QWebEngineView" name="web">
      <property name="url">
       <url>
        <string>about:blank</string>
       </url>
      </property>
     </widget>
    </item>
    <item row="0" column="0">
     <widget class="QLabel" name="label">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <property name="text">
       <string>Количество людей</string>
      </property>
     </widget>
    </item>
    <item row="0" column="2" rowspan="2">
     <widget class="QGroupBox" name="groupBox">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <property name="title">
       <string>Информация</string>
      </property>
      <layout class="QGridLayout" name="gridLayout_2">
       <item row="0" column="0">
        <widget class="QLineEdit" name="edtCity"/>
       </item>
       <item row="1" column="0">
        <widget class="QTextEdit" name="edtInfo"/>
       </item>
      </layout>
     </widget>
    </item>
   </layout>
  </widget>
 </widget>
 <customwidgets>
  <customwidget>
   <class>QWebEngineView</class>
   <extends>QWidget</extends>
   <header location="global">QtWebEngineWidgets/QWebEngineView</header>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>

Задание

Добавление фильтров и выделение объекта на на карте

…видео инструкция в обработке