code: def test_xarray(self):
      points = pd.DataFrame(
          data=[
              [0, 0, 0, 0],
              [0, 2, 0, 1],
              [1, 0, 0, 2],
              [3, 2, 1, 0],
              [1, 2, 1, 1],
              [3, 3, 1, 2],
              [0, 0, 2, 0],
              [0, 4, 2, 1],
              [2, 0, 2, 2],
          ],
          columns=["x", "y", "shape", "point"],
      ).astype({"x": float, "y": float})
  
      ds = points.set_index(["shape", "point"]).to_xarray()
      da = ds.to_stacked_array("xy", ["shape", "point"])
      shapes = da.values
  
      gpa = prince.GPA()
      aligned_shapes = gpa.fit_transform(shapes)
      da.values = aligned_shapes
      da.to_unstacked_dataset("xy").to_dataframe().reset_index()
  
file_path: prince/tests/test_gpa.py
imports: from __future__ import annotations
  import unittest
  import numpy
  import pandas
  import prince
label_desc: Use image node_id 11 for calling the TestGPA obj's underlying member method code with example usage: obj.test_xarray() without return types