Verkennende gegevensanalyse
- Onderwerpen:
- Query's
Gemaakt voor:
- Gebruiker
- Ontwikkelaar
Dit document bevat enkele basisvoorbeelden en aanbevolen procedures voor het gebruik van Data Distiller voor het verkennen en analyseren van gegevens van een Python -laptop.
Aan de slag
Voordat u verdergaat met deze handleiding, moet u controleren of u een verbinding met Data Distiller hebt gemaakt in uw Python -laptop. Zie de documentatie voor instructies op hoe te a Python notitieboekje met Gegevens Distillerverbinden.
Verkrijgen van basisstatistieken
Gebruik de code hieronder om het aantal rijen en verschillende profielen in een dataset terug te winnen.
table_name = 'ecommerce_events'
basic_statistics_query = f"""
SELECT
COUNT(_id) as "totalRows",
COUNT(DISTINCT _id) as "distinctUsers"
FROM {table_name}"""
df = qs_cursor.query(basic_statistics_query, output="dataframe")
df
de output van de Steekproef
Een gesamplede versie van grote gegevenssets maken
Als de dataset u wenst om te vragen zeer groot is, of als de nauwkeurige resultaten van verkennende vragen niet noodzakelijk zijn, gebruik de steekproeffunctionaliteitbeschikbaar voor de vragen van Distiller van Gegevens. Dit is een proces in twee stappen:
- Eerst, analyseert de dataset om een bemonsterde versie met een gespecificeerde steekproefverhouding tot stand te brengen
- Daarna, vraag de bemonsterde versie van de dataset. Afhankelijk van de functies die u op de gesamplede dataset toepast, kunt u de uitvoer naar de getallen schalen naar de volledige dataset
Een 5%-voorbeeld maken
In het onderstaande voorbeeld wordt de gegevensset geanalyseerd en wordt een monster van 5% gemaakt:
# A sampling rate of 10 is 100% in Query Service, so for 5% use a sampling rate 0.5
sampling_rate = 0.5
analyze_table_query=f"""
SET aqp=true;
ANALYZE TABLE {table_name} TABLESAMPLE SAMPLERATE {sampling_rate}"""
qs_cursor.query(analyze_table_query, output="raw")
Bekijk uw voorbeelden
U kunt de functie sample_meta
gebruiken om voorbeelden weer te geven die op basis van een bepaalde gegevensset zijn gemaakt. In het codefragment hieronder ziet u hoe u de functie sample_meta
gebruikt.
sampled_version_of_table_query = f'''SELECT sample_meta('{table_name}')'''
df_samples = qs_cursor.query(sampled_version_of_table_query, output="dataframe")
df_samples
de output van de Steekproef:
Vraag uw voorbeeld
U kunt uw steekproef direct vragen door de naam van de steekproeflijst van de teruggekeerde meta-gegevens van verwijzingen te voorzien. Vervolgens kunt u de resultaten vermenigvuldigen met de bemonsteringsverhouding om een schatting te krijgen.
sample_table_name = df_samples[df_samples["sampling_rate"] == sampling_rate]["sample_table_name"].iloc[0]
count_query=f'''SELECT count(*) as cnt from {sample_table_name}'''
df = qs_cursor.query(count_query, output="dataframe")
# Divide by the sampling rate to extrapolate to the full dataset
approx_count = df["cnt"].iloc[0] / (sampling_rate / 100)
print(f"Approximate count: {approx_count} using {sampling_rate *10}% sample")
de output van de Steekproef
Approximate count: 1284600.0 using 5.0% sample
Analyse van e-mailtrechter
Een trechter-analyse is een methode om te begrijpen welke stappen nodig zijn om een doelresultaat te bereiken en hoeveel gebruikers elk van deze stappen doorlopen. In het onderstaande voorbeeld ziet u een eenvoudige trechter-analyse van de stappen die leiden tot een gebruiker die zich abonneert op een nieuwsbrief. Het resultaat van het abonnement wordt weergegeven door een gebeurtenistype web.formFilledOut
.
Eerst, stel een vraag in werking om het aantal gebruikers bij elke stap te krijgen.
simple_funnel_analysis_query = f'''SELECT eventType, COUNT(DISTINCT _id) as "distinctUsers",COUNT(_id) as "distinctEvents" FROM {table_name} GROUP BY eventType ORDER BY distinctUsers DESC'''
funnel_df = qs_cursor.query(simple_funnel_analysis_query, output="dataframe")
funnel_df
de output van de Steekproef
Zoekresultaten voor plotten
Vervolgens plaatst u de queryresultaten met behulp van de Python plotly
-bibliotheek:
import plotly.express as px
email_funnel_events = ["directMarketing.emailSent", "directMarketing.emailOpened", "directMarketing.emailClicked", "web.formFilledOut"]
email_funnel_df = funnel_df[funnel_df["eventType"].isin(email_funnel_events)]
fig = px.funnel(email_funnel_df, y='eventType', x='distinctUsers')
fig.show()
de output van de Steekproef
Gebeurteniscorrelaties
Een andere algemene analyse is het berekenen van correlaties tussen gebeurtenistypen en een gebeurtenistype voor doelconversie. In dit voorbeeld wordt de abonnementsgebeurtenis vertegenwoordigd door web.formFilledOut
. In dit voorbeeld worden de Spark -functies die beschikbaar zijn in Data Distiller-query's gebruikt om de volgende stappen te bereiken:
- Telt het aantal gebeurtenissen voor elk gebeurtenistype door profiel.
- De tellingen van elk gebeurtenistype over profielen groeperen en de correlaties van elk gebeurtenistype berekenen met
web,formFilledOut
. - Transformeer het dataframe van tellingen en correlaties in een lijst van de Coëfficiënten van de Correlatie van Pearson van elke eigenschap (gebeurtenistype tellingen) met de doelgebeurtenis.
- U kunt de resultaten in een waarnemingspunt visualiseren.
De Spark functies voegen de gegevens samen om een kleine lijst van resultaten terug te keren, zodat kunt u dit type van vraag op de volledige dataset uitvoeren.
large_correlation_query=f'''
SELECT SUM(webFormsFilled) as webFormsFilled_totalUsers,
SUM(advertisingClicks) as advertisingClicks_totalUsers,
SUM(productViews) as productViews_totalUsers,
SUM(productPurchases) as productPurchases_totalUsers,
SUM(propositionDismisses) as propositionDismisses_totaUsers,
SUM(propositionDisplays) as propositionDisplays_totaUsers,
SUM(propositionInteracts) as propositionInteracts_totalUsers,
SUM(emailClicks) as emailClicks_totalUsers,
SUM(emailOpens) as emailOpens_totalUsers,
SUM(webLinkClicks) as webLinksClicks_totalUsers,
SUM(webPageViews) as webPageViews_totalusers,
corr(webFormsFilled, emailOpens) as webForms_EmailOpens,
corr(webFormsFilled, advertisingClicks) as webForms_advertisingClicks,
corr(webFormsFilled, productViews) as webForms_productViews,
corr(webFormsFilled, productPurchases) as webForms_productPurchases,
corr(webFormsFilled, propositionDismisses) as webForms_propositionDismisses,
corr(webFormsFilled, propositionInteracts) as webForms_propositionInteracts,
corr(webFormsFilled, emailClicks) as webForms_emailClicks,
corr(webFormsFilled, emailOpens) as webForms_emailOpens,
corr(webFormsFilled, emailSends) as webForms_emailSends,
corr(webFormsFilled, webLinkClicks) as webForms_webLinkClicks,
corr(webFormsFilled, webPageViews) as webForms_webPageViews
FROM(
SELECT _{tenant_id}.cmle_id as userID,
SUM(CASE WHEN eventType='web.formFilledOut' THEN 1 ELSE 0 END) as webFormsFilled,
SUM(CASE WHEN eventType='advertising.clicks' THEN 1 ELSE 0 END) as advertisingClicks,
SUM(CASE WHEN eventType='commerce.productViews' THEN 1 ELSE 0 END) as productViews,
SUM(CASE WHEN eventType='commerce.productPurchases' THEN 1 ELSE 0 END) as productPurchases,
SUM(CASE WHEN eventType='decisioning.propositionDismiss' THEN 1 ELSE 0 END) as propositionDismisses,
SUM(CASE WHEN eventType='decisioning.propositionDisplay' THEN 1 ELSE 0 END) as propositionDisplays,
SUM(CASE WHEN eventType='decisioning.propositionInteract' THEN 1 ELSE 0 END) as propositionInteracts,
SUM(CASE WHEN eventType='directMarketing.emailClicked' THEN 1 ELSE 0 END) as emailClicks,
SUM(CASE WHEN eventType='directMarketing.emailOpened' THEN 1 ELSE 0 END) as emailOpens,
SUM(CASE WHEN eventType='directMarketing.emailSent' THEN 1 ELSE 0 END) as emailSends,
SUM(CASE WHEN eventType='web.webinteraction.linkClicks' THEN 1 ELSE 0 END) as webLinkClicks,
SUM(CASE WHEN eventType='web.webinteraction.pageViews' THEN 1 ELSE 0 END) as webPageViews
FROM {table_name}
GROUP BY userId
)
'''
large_correlation_df = qs_cursor.query(large_correlation_query, output="dataframe")
large_correlation_df
de output van de Steekproef:
Rij omzetten in correlatie van gebeurtenistype
Daarna, zet de enige rij gegevens in de vraagoutput hierboven om in een lijst die de correlaties van elk gebeurtenistype met de gebeurtenis van het doelabonnement toont:
cols = large_correlation_df.columns
corrdf = large_correlation_df[[col for col in cols if ("webForms_" in col)]].melt()
corrdf["feature"] = corrdf["variable"].apply(lambda x: x.replace("webForms_", ""))
corrdf["pearsonCorrelation"] = corrdf["value"]
corrdf.fillna(0)
de output van de Steekproef:
webForms_EmailOpens
webForms_advertisingClicks
webForms_productViews
webForms_productPurchases
webForms_propositionDismisses
webForms_propositionInteracts
webForms_emailClicks
webForms_emailOpens
webForms_emailSends
webForms_webLinkClicks
webForms_webPageViews
Tot slot kunt u de correlaties met de matplotlib
Python -bibliotheek visualiseren:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(5,10))
sns.barplot(data=corrdf.fillna(0), y="feature", x="pearsonCorrelation")
ax.set_title("Pearson Correlation of Events with the outcome event")
Volgende stappen
Door dit document te lezen, hebt u geleerd hoe u Data Distiller kunt gebruiken om gegevens van een Python -laptop te verkennen en te analyseren. De volgende stap in het creëren van eigenschappijpleidingen van Experience Platform om douanemodellen in uw machine het leren milieu te voeren is ingenieurseigenschappen voor machine het leren.