meridian.data.load.DataFrameDataLoader

Liest Daten aus einem Pandas-DataFrame.

Übernommen von: InputDataLoader

Diese Klasse liest Eingabedaten aus einem Pandas-DataFrame. Das Attribut coord_to_columns speichert eine Zuordnung von Zielkoordinaten der InputData und Array-Namen zu den Spaltennamen des DataFrames, falls diese unterschiedlich sind. Es gibt folgende Felder:

  • geo, time, kpi, revenue_per_kpi, population (einzelne Spalte)
  • controls (mehrere Spalten)
  • (1) media, media_spend (mehrere Spalten)
  • (2) reach, frequency, rf_spend (mehrere Spalten)
  • non_media_treatments (mehrere Spalten, optional)
  • organic_media (mehrere Spalten, optional)
  • organic_reach, organic_frequency (mehrere Spalten, optional)

Der DataFrame muss (1) oder (2) enthalten, aber nicht beide. Außerdem muss jeder Media-Channel in (1) oder (2) aufgeführt sein, aber nicht in beiden.

Wichtig:

  • Die Werte in Zeitspalten müssen so formatiert sein: TT.MM.JJJJ.
  • In einem länderbezogenen Modell sind geo und population optional. Wenn population angegeben ist, wird es auf den Standardwert 1.0 zurückgesetzt.
  • Wenn media-Daten angegeben werden, sind media_to_channel und media_spend_to_channel erforderlich. Wenn reach- und frequency-Daten angegeben werden, sind reach_to_channel, frequency_to_channel und rf_spend_to_channel erforderlich.
  • Falls organic_reach- und organic_frequency-Daten angegeben werden, sind organic_reach_to_channel und organic_frequency_to_channel erforderlich.

Beispiel:

# df = [...]
coord_to_columns = CoordToColumns(
  geo='dmas',
  time='dates',
  kpi='conversions',
  revenue_per_kpi='revenue_per_conversions',
  controls=['control_income'],
  population='populations',
  media=['impressions_tv', 'impressions_fb', 'impressions_search'],
  media_spend=['spend_tv', 'spend_fb', 'spend_search'],
  reach=['reach_yt'],
  frequency=['frequency_yt'],
  rf_spend=['rf_spend_yt'],
  non_media_treatments=['price', 'discount']
  organic_media=['organic_impressions_blog'],
  organic_reach=['organic_reach_newsletter'],
  organic_frequency=['organic_frequency_newsletter'],
)
media_to_channel = {
    'impressions_tv': 'tv',
    'impressions_fb': 'fb',
    'impressions_search': 'search',
}
media_spend_to_channel = {
    'spend_tv': 'tv', 'spend_fb': 'fb', 'spend_search': 'search'
}
reach_to_channel = {'reach_yt': 'yt'}
frequency_to_channel = {'frequency_yt': 'yt'}
rf_spend_to_channel = {'rf_spend_yt': 'yt'}
organic_reach_to_channel = {'organic_reach_newsletter': 'newsletter'}
organic_frequency_to_channel = {'organic_frequency_newsletter': 'newsletter'}

data_loader = DataFrameDataLoader(
    df=df,
    coord_to_columns=coord_to_columns,
    kpi_type='non-revenue',
    media_to_channel=media_to_channel,
    media_spend_to_channel=media_spend_to_channel,
    reach_to_channel=reach_to_channel,
    frequency_to_channel=frequency_to_channel,
    rf_spend_to_channel=rf_spend_to_channel,
    organic_reach_to_channel=organic_reach_to_channel,
    organic_frequency_to_channel=organic_frequency_to_channel,
)
data = data_loader.load()

df Das pd.DataFrame-Objekt, aus dem gelesen werden soll. Eine der folgenden Bedingungen ist erforderlich:

  • Im DataFrame dürfen keine NAs (fehlende Werte) vorhanden sein.
  • Für eine beliebige Anzahl von Anfangszeiträumen sind in allen Spalten ohne Media-Daten (kpi, revenue_per_kpi, media_spend, controls und population) nur Media-Daten und NAs enthalten.
coord_to_columns Ein CoordToColumns-Objekt, dessen Felder die gewünschten Koordinaten der InputData sind und dessen Werte die aktuellen Namen der Spalten (oder Listen von Spalten) im DataFrame sind. Beispiel:
coord_to_columns = CoordToColumns(
    geo='dmas',
    time='dates',
    kpi='conversions',
    revenue_per_kpi='revenue_per_conversions',
    media=['impressions_tv', 'impressions_yt', 'impressions_search'],
    spend=['spend_tv', 'spend_yt', 'spend_search'],
    controls=['control_income'],
    population=population,
)

kpi_type Ein String, der angibt, ob der KPI vom Typ 'revenue' oder 'non-revenue' ist. Wenn kpi_type gleich 'non-revenue' ist und revenue_per_kpi vorhanden ist, wird die ROI-Abstimmung verwendet und die Analyse anhand des Umsatzes ausgeführt. Ist revenue_per_kpi für denselben kpi_type nicht vorhanden, wird die benutzerdefinierte ROI-Abstimmung verwendet und die Analyse wird anhand des KPI ausgeführt.
media_to_channel Ein Dictionary, dessen Schlüssel die tatsächlichen Spaltennamen für media-Daten im DataFrame sind und dessen Werte die gewünschten Channelnamen sind. Sie sind mit den media_spend-Daten identisch. Beispiel:

media_to_channel = {'media_tv': 'tv', 'media_yt': 'yt', 'media_fb': 'fb'}

media_spend_to_channel Ein Dictionary, dessen Schlüssel die tatsächlichen Spaltennamen für media_spend-Daten im DataFrame sind und dessen Werte die gewünschten Channelnamen sind. Sie sind mit den media-Daten identisch. Beispiel:

media_spend_to_channel = {
    'spend_tv': 'tv', 'spend_yt': 'yt', 'spend_fb': 'fb'
}

reach_to_channel Ein Dictionary, dessen Schlüssel die tatsächlichen Spaltennamen für reach-Daten im DataFrame sind und dessen Werte die gewünschten Channelnamen sind. Sie sind mit den rf_spend-Daten identisch. Beispiel:

reach_to_channel = {'reach_tv': 'tv', 'reach_yt': 'yt', 'reach_fb': 'fb'}

frequency_to_channel Ein Dictionary, dessen Schlüssel die tatsächlichen Spaltennamen für frequency-Daten im DataFrame sind und dessen Werte die gewünschten Channelnamen sind. Sie sind mit den rf_spend-Daten identisch. Beispiel:

frequency_to_channel = {
    'frequency_tv': 'tv', 'frequency_yt': 'yt', 'frequency_fb': 'fb'
}

rf_spend_to_channel Ein Dictionary, dessen Schlüssel die tatsächlichen Spaltennamen für rf_spend-Daten im DataFrame sind und dessen Werte die gewünschten Channelnamen sind. Sie sind mit den Daten für reach und frequency identisch. Beispiel:

rf_spend_to_channel = {
    'rf_spend_tv': 'tv', 'rf_spend_yt': 'yt', 'rf_spend_fb': 'fb'
}

organic_reach_to_channel Ein Dictionary, dessen Schlüssel die tatsächlichen Spaltennamen für organic_reach-Daten im DataFrame sind und dessen Werte die gewünschten Channelnamen sind. Sie sind mit den organic_frequency-Daten identisch. Beispiel:

organic_reach_to_channel = {
    'organic_reach_newsletter': 'newsletter',
}

organic_frequency_to_channel Ein Dictionary, dessen Schlüssel die tatsächlichen Spaltennamen für organic_frequency-Daten im DataFrame und dessen Werte die gewünschten Channelnamen sind. Sie sind mit den organic_reach-Daten identisch. Beispiel:

organic_frequency_to_channel = {
    'organic_frequency_newsletter': 'newsletter',
}

Methoden

load

Quelle ansehen

Liest Daten aus einem DataFrame und gibt ein „InputData“-Objekt zurück.

__eq__

Gibt zurück, ob „self==value“.

frequency_to_channel None
media_spend_to_channel None
media_to_channel None
organic_frequency_to_channel None
organic_reach_to_channel None
reach_to_channel None
rf_spend_to_channel None