code: def compute_private_result(
      df: Union[pd.DataFrame, BeamDataFrame, SparkDataFrame]
  ) -> Union[pd.DataFrame, BeamDataFrame, SparkDataFrame]:
      dp_query_builder = dataframes.QueryBuilder(df, "visitor_id")
      query = (
          dp_query_builder.groupby(
              "day",
              max_groups_contributed=3,
              max_contributions_per_group=1,
          )
          .count()
          .sum("spent_money", min_value=0, max_value=100)
          .mean("spent_money")
          .build_query()
      )
      result_df = query.run_query(
          dataframes.Budget(epsilon=1, delta=1e-10),
          noise_kind=pipeline_dp.NoiseKind.GAUSSIAN,
      )
      return result_df
  
file_path: pipelinedp/examples/restaurant_visits/run_on_dataframes.py
imports: from absl import app
  from absl import flags
  import os
  import shutil
  import pandas
  from pyspark.sql import SparkSession
  import pyspark
  import apache_beam
  from apache_beam.runners.portability import fn_api_runner
  from apache_beam.dataframe.io import read_csv
  import pipeline_dp
  from pipeline_dp import dataframes
  from typing import Union
label_desc: Use image node_id 3 for calling a global function with example usage: compute_private_result(df) and returns: result_df