code: def test_get_numeric_channels_values(self):
      # when
      backend = MagicMock()
      backend.get_channel_points_csv.return_value = StringIO(
          "\n".join(["0.3,2.5", "1,2"])
      )
  
      experiment = MagicMock()
      experiment.id = a_string()
      experiment.internal_id = a_uuid_string()
      experiment.channels = [
          Munch(id=a_uuid_string(), name="epoch_loss")
      ]
      experiment.channelsLastValues = [
          Munch(channelName="epoch_loss", x=2.5, y=2)
      ]
  
      backend.get_experiment.return_value = experiment
  
      # then
      experiment = Experiment(
          backend=backend,
          project=a_project(),
          _id=a_string(),
          internal_id=a_uuid_string(),
      )
      result = experiment.get_numeric_channels_values("epoch_loss")
  
      expected_result = pd.DataFrame(
          {"x": [0.3, 1.0], "epoch_loss": [2.5, 2.0]}, dtype=float
      )
  
      expected_result = sort_df_by_columns(expected_result)
      result = sort_df_by_columns(result)
  
      assert_frame_equal(expected_result, result)
  
imports: import base64
  import random
  import time
  import unittest
  from io import StringIO
  import mock
  import pandas
  from mock import MagicMock, call
  from munch import Munch
  from pandas.testing import assert_frame_equal
  from neptune.legacy.experiments import Experiment
  from neptune.legacy.internal.channels.channels import ChannelType, ChannelValue
  from tests.unit.neptune.legacy.random_utils import a_project, a_string, a_uuid_string, an_experiment_id, sort_df_by_columns
label_desc: Use image node_id 5 for calling the TestExperiment obj's underlying member method code with example usage: obj.test_get_numeric_channels_values() without return types