Afficher la source sur GitHub
|
Lit les données d'un Pandas DataFrame.
Hérite de : InputDataLoader
meridian.data.load.DataFrameDataLoader(
df: pd.DataFrame,
coord_to_columns: CoordToColumns,
kpi_type: str,
media_to_channel: (Mapping[str, str] | None) = None,
media_spend_to_channel: (Mapping[str, str] | None) = None,
reach_to_channel: (Mapping[str, str] | None) = None,
frequency_to_channel: (Mapping[str, str] | None) = None,
rf_spend_to_channel: (Mapping[str, str] | None) = None,
organic_reach_to_channel: (Mapping[str, str] | None) = None,
organic_frequency_to_channel: (Mapping[str, str] | None) = None
)
Cette classe lit les données d'entrée d'un Pandas DataFrame. L'attribut coord_to_columns stocke un mappage entre les coordonnées InputData cibles et noms de tableaux et les noms de colonnes DataFrame, s'ils sont différents. Les champs sont les suivants :
geo,time,kpi,revenue_per_kpi,population(colonne unique)controls(plusieurs colonnes)- (1)
media,media_spend(plusieurs colonnes) - (2)
reach,frequency,rf_spend(plusieurs colonnes) non_media_treatments(plusieurs colonnes, facultatif)organic_media(plusieurs colonnes, facultatif)organic_reach,organic_frequency(plusieurs colonnes, facultatif)
Le DataFrame doit inclure (1) ou (2), mais pas forcément les deux.
De plus, chaque canal média doit apparaître dans (1) ou (2), mais pas dans les deux.
Remarques :
- Les valeurs des colonnes de date doivent être au format aaaa-mm-jj.
- Dans un modèle national,
geoetpopulationsont facultatifs. Si lapopulationest indiquée, elle est réinitialisée sur la valeur par défaut1.0. - Si des données
mediasont fournies,media_to_channeletmedia_spend_to_channelsont obligatoires. Si des donnéesreachetfrequencysont fournies,reach_to_channel,frequency_to_channeletrf_spend_to_channelsont obligatoires. - Si des données
organic_reachetorganic_frequencysont fournies,organic_reach_to_channeletorganic_frequency_to_channelsont obligatoires.
Exemple :
# 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()
Méthodes
load
load() -> meridian.data.input_data.InputData
Lit les données à partir d'un DataFrame et renvoie un objet InputData.
__eq__
__eq__(
other
)
Renvoie self==value.
Afficher la source sur GitHub