def _load_data(self, station: str, year: Optional[int] = None) -> None:
        """
        Load file for a single station from Meteostat
        """

        # File name
        file = generate_endpoint_path(self.granularity, station, year)

        # Get local file path
        path = get_local_file_path(self.cache_dir, self.cache_subdir, file)

        # Check if file in cache
        if self.max_age > 0 and file_in_cache(path, self.max_age):
            # Read cached data
            df = pd.read_pickle(path)

        else:
            # Get data from Meteostat
            df = load_handler(
                self.endpoint,
                file,
                self.proxy,
                self._columns,
            )

            # Validate and prepare data for further processing
            if not df.empty:
                # Add weather station ID
                df["station"] = station

                # Set index
                df = df.set_index(["station", "start", "end", "month"])

            # Save as Pickle
            if self.max_age > 0:
                df.to_pickle(path)

        # Filter time period and append to DataFrame
        if self.granularity == Granularity.NORMALS and not df.empty and self._end:
            # Get time index
            end = df.index.get_level_values("end")
            # Filter & return
            return df.loc[end == self._end]

        # Return
        return df

        Load file for a single station from Meteostat
        
meteostat/interface/normals.py