加载国家级数据

以下各部分中提供了模拟数据,作为每种数据类型和格式的示例。

CSV

使用 CsvDataLoader 加载模拟 CSV 数据

  1. 将列名称映射到变量类型。所需的变量类型为 timecontrolskpirevenue_per_kpimediamedia_spend。如需了解每个变量的定义,请参阅收集和整理数据

    coord_to_columns = load.CoordToColumns(
        time='time',
        controls=['GQV', 'Discount', 'Competitor_Sales'],
        kpi='conversions',
        revenue_per_kpi='revenue_per_conversion',
        media=[
            'Channel0_impression',
            'Channel1_impression',
            'Channel2_impression',
            'Channel3_impression',
            'Channel4_impression',
            'Channel5_impression',
        ],
        media_spend=[
            'Channel0_spend',
            'Channel1_spend',
            'Channel2_spend',
            'Channel3_spend',
            'Channel4_spend',
            'Channel5_spend',
        ],
    )
    
  2. 将媒体变量和媒体支出映射到要在双页输出中显示的指定渠道名称。在以下示例中,Channel0_impressionChannel0_spend 连接到同一个渠道 Channel0

    correct_media_to_channel = {
        'Channel0_impression': 'Channel0',
        'Channel1_impression': 'Channel1',
        'Channel2_impression': 'Channel2',
        'Channel3_impression': 'Channel3',
        'Channel4_impression': 'Channel4',
        'Channel5_impression': 'Channel5',
    }
    correct_media_spend_to_channel = {
        'Channel0_spend': 'Channel0',
        'Channel1_spend': 'Channel1',
        'Channel2_spend': 'Channel2',
        'Channel3_spend': 'Channel3',
        'Channel4_spend': 'Channel4',
        'Channel5_spend': 'Channel5',
    }
    
  3. 使用 CsvDataLoader 加载数据:

    loader = load.CsvDataLoader(
        csv_path=f'/{PATH}/{FILENAME}.csv',
        kpi_type='non_revenue',
        coord_to_columns=coord_to_columns,
        media_to_channel=correct_media_to_channel,
        media_spend_to_channel=correct_media_spend_to_channel,
    )
    data = loader.load()
    

    其中:

    • kpi_type'revenue''non_revenue'
    • PATH 表示指向数据文件位置的路径。
    • FILENAME 表示数据文件的名称。

Xarray 数据集

使用 XrDatasetDataLoader 加载模拟 Xarray 数据集

  1. 使用 pickle 加载数据:

    import pickle
    with open(f'/{PATH}/{FILENAME}.pkl', 'r') as fh:
      XrDataset=pickle.load(fh)
    

    其中:

    • PATH 表示指向数据文件位置的路径。
    • FILENAME 表示数据文件的名称。
  2. 将数据集传递给 XrDatasetDataLoader。使用 name_mapping 实参映射坐标和数组。如果输入数据集内的名称与所需名称不同,请提供映射。所需的坐标名称为 timecontrol_variablemedia_channel。所需的数据变量名称为 kpirevenue_per_kpicontrolsmediamedia_spend

    loader = load.XrDatasetDataLoader(
        XrDataset,
        kpi_type='non_revenue',
        name_mapping={'channel': 'media_channel',
                      'control': 'control_variable',
                      'conversions': 'kpi',
                      'revenue_per_conversion': 'revenue_per_kpi',
                      'control_value': 'controls',
                      'spend': 'media_spend'},
    )
    
    data = loader.load()
    

    其中:

    • kpi_type'revenue''non_revenue'

Numpy 多维数组

如需直接加载 NumPy 多维数组,请使用 NDArrayInputDataBuilder

  1. 将数据创建为单独的 NumPy 多维数组。

    import numpy as np
    
    kpi_nd = np.array([[1, 2, 3]])
    controls_nd = np.array([[[1, 2], [3, 4], [5, 6]]])
    revenue_per_kpi_nd = np.array([[1, 2, 3]])
    media_nd = np.array([[[1, 2], [3, 4], [5, 6]]])
    media_spend_nd = np.array([[[1, 2], [3, 4], [5, 6]]])
    
  2. 使用 NDArrayInputDataBuilder 设置时间,并根据 Meridian 输入数据中的要求指定渠道或维度名称。如需了解每个变量的定义,请参阅收集和整理数据

    from meridian.data import nd_array_input_data_builder as data_builder
    
    builder = (
        data_builder.NDArrayInputDataBuilder(kpi_type='non_revenue')
    )
    builder.time_coords = ['2024-01-02', '2024-01-03', '2024-01-01']
    builder.media_time_coords = ['2024-01-02', '2024-01-03', '2024-01-01']
    builder = (
      builder
        .with_kpi(kpi_nd)
        .with_revenue_per_kpi(revenue_per_kpi_nd)
        .with_controls(
          controls_nd,
          control_names=["control0", "control1"])
        .with_media(
          m_nd=media_nd,
          ms_nd=media_spend_nd,
          media_channels=["channel0", "channel1"]
        )
    )
    
    data = builder.build()
    

    其中:

    • kpi_type'revenue''non_revenue'

Pandas DataFrame 或其他数据格式

使用 DataFrameInputDataBuilder 加载模拟的其他数据格式(例如 excel):

  1. 将数据(例如 excel 电子表格)读入一个或多个 Pandas DataFrame

    import pandas as pd
    
    df = pd.read_excel(
        'https://github.com/google/meridian/raw/main/meridian/data/simulated_data/xlsx/national_media.xlsx',
        engine='openpyxl',
    )
    
  2. 使用 DataFrameInputDataBuilder 将列名称映射到 Meridian 输入数据所需的变量类型。如需了解每个变量的定义,请参阅收集和整理数据

    from meridian.data import data_frame_input_data_builder as data_builder
    
    builder = data_builder.DataFrameInputDataBuilder(
        kpi_type='non_revenue',
        default_kpi_column="conversions",
        default_revenue_per_kpi_column="revenue_per_conversion",
    )
    builder = (
        builder
            .with_kpi(df)
            .with_revenue_per_kpi(df)
            .with_controls(df, control_cols=["GQV", "Discount", "Competitor_Sales"])
    )
    channels = ["Channel0", "Channel1", "Channel2", "Channel3", "Channel4", "Channel5"]
    builder = builder.with_media(
        df,
        media_cols=[f"{channel}_impression" for channel in channels],
        media_spend_cols=[f"{channel}_spend" for channel in channels],
        media_channels=channels,
    )
    
    data = builder.build()
    

    其中:

    • kpi_type'revenue''non_revenue'

接下来,您可以创建模型