code: def conditional_entropy(
      x: Union[List, np.ndarray, pd.Series],
      y: Union[List, np.ndarray, pd.Series],
  ) -> float:
      """
      Calculate the conditional entropy of x given y: S(x|y).
  
      Wikipedia: https://en.wikipedia.org/wiki/Conditional_entropy
  
      Parameters
      ----------
      x: Union[List, np.ndarray, pd.Series]
          A sequence of numerical_variable without nulls
      y: Union[List, np.ndarray, pd.Series]
          A sequence of numerical_variable without nulls
  
      Returns
      -------
      float
          Representing the conditional entropy
      """
      y_counter = Counter(y)
      xy_counter = Counter(list(zip(x, y)))
      total_occurrences = sum(y_counter.values())
      s_xy = 0.0
      for xy in xy_counter:
          p_xy = xy_counter[xy] / total_occurrences
          p_y = y_counter[xy[1]] / total_occurrences
          s_xy += p_xy * math.log(p_y / p_xy, math.e)
      return s_xy
  
file_path: deepchecks/deepchecks/utils/correlation_methods.py
imports: import math
  from collections import Counter
  from typing import List, Union
  import numpy
  import pandas
  from scipy.stats import entropy
  from deepchecks.utils.distribution.preprocessing import value_frequency
label_desc: Use image node_id 1 for calling a global function with example usage: conditional_entropy(x, y) and returns: s_xy