Datenerkennung
Dieser Abschnitt enthält Konfigurationsschritte und Beispielabfragen, mit denen Trends wie die „Top 10 der Städte nach Benutzeraktivität“ oder „Top 10 der angezeigten Produkte“ angezeigt werden.
Konfiguration von Bibliotheken
JupyterLab unterstützt mehrere Bibliotheken. Der folgende Code kann eingefügt und in einer Code-Zelle ausgeführt werden, um alle in diesem Beispiel verwendeten erforderlichen Pakete zu erfassen und zu installieren. Sie können jenseits dieses Beispiels zusätzliche oder alternative Pakete für Ihre eigene Datenanalyse verwenden. Für eine Liste der unterstützten Pakete kopieren Sie !pip list --format=columns
und fügen Sie den Inhalt in eine neue Zelle ein.
!pip install colorama
import chart_studio.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot
from scipy import stats
import numpy as np
import warnings
warnings.filterwarnings('ignore')
from scipy.stats import pearsonr
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
import pandas as pd
import math
import re
import seaborn as sns
from datetime import datetime
import colorama
from colorama import Fore, Style
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.width', 1000)
pd.set_option('display.expand_frame_repr', False)
pd.set_option('display.max_colwidth', -1)
Verbinden mit Adobe Experience Platform Query Service
JupyterLab auf Experience Platform ermöglicht Ihnen die Verwendung von SQL in einem Python Notebook für den Datenzugriff über Abfrage-Service. Der Zugriff auf Daten über den Query Service kann aufgrund der kürzeren Ausführungszeiten bei der Bearbeitung großer Datensätze nützlich sein. Beachten Sie, dass Datenabfragen mit dem Query Service ein Limit bei der Verarbeitungszeit von 10 Minuten aufweisen.
Bevor Sie den Query Service in JupyterLab verwenden, sollten Sie Grundlagenkenntnisse zur Query Service -SQL-Syntax besitzen.
Um den Abfrage-Service in JupyterLab zu nutzen, müssen Sie zunächst eine Verbindung zwischen Ihrem ausgeführten Python-Notebook und dem Abfrage-Service herstellen. Dies kann durch Ausführen der folgenden Zelle erreicht werden.
qs_connect()
Definieren des midvalues-Datensatzes zur Untersuchung
Um Daten abfragen und untersuchen zu können, muss eine Tabelle mit midvalues-Datensätzen bereitgestellt werden. Kopieren Sie die Werte table_name
und table_id
und ersetzen Sie sie durch Ihre eigenen Datentabellenwerte.
target_table = "table_name"
target_table_id = "table_id"
Nach der Fertigstellung sollte diese Zelle dem folgenden Beispiel ähneln:
target_table = "cross_industry_demo_midvalues"
target_table_id = "5f7c40ef488de5194ba0157a"
Untersuchen des Datensatzes auf verfügbare Daten
Mithilfe der unten angegebenen Zelle können Sie den in der Tabelle erfassten Datumsbereich anzeigen. Die Untersuchung der Anzahl der Tage, des ersten Datums und des letzten Datums dient der Auswahl eines Datumsbereichs für weitere Analysen.
%%read_sql -c QS_CONNECTION
SELECT distinct Year(timestamp) as Year, Month(timestamp) as Month, count(distinct DAY(timestamp)) as Count_days, min(DAY(timestamp)) as First_date, max(DAY(timestamp)) as Last_date, count(timestamp) as Count_hits
from {target_table}
group by Month(timestamp), Year(timestamp)
order by Year, Month;
Beim Ausführen der Zelle wird die folgende Ausgabe erzeugt:
Konfigurieren von Datumsangaben zur Erkennung von Datensätzen
Nachdem Sie die verfügbaren Daten für die Datensatzerkennung ermittelt haben, müssen die folgenden Parameter aktualisiert werden. Die in dieser Zelle konfigurierten Datumsangaben werden nur zur Datenerkennung in Form von Abfragen verwendet. Die Datumsangaben werden später in diesem Handbuch erneut in geeignete Bereiche zur explorativen Datenanalyse aktualisiert.
target_year = "2020" ## The target year
target_month = "02" ## The target month
target_day = "(01,02,03)" ## The target days
Datensatzerkennung
Nachdem Sie alle Parameter konfiguriert und den Query Service gestartet haben sowie über einen Datumsbereich verfügen, können Sie mit dem Lesen von Datenzeilen beginnen. Sie sollten die Anzahl der Zeilen begrenzen, die Sie lesen.
from platform_sdk.dataset_reader import DatasetReader
from datetime import date
dataset_reader = DatasetReader(PLATFORM_SDK_CLIENT_CONTEXT, dataset_id=target_table_id)
# If you do not see any data or would like to expand the default date range, change the following query
Table = dataset_reader.limit(5).read()
Verwenden Sie die folgende Zelle, um die Anzahl der im Datensatz verfügbaren Spalten anzuzeigen:
print("\nNumber of columns:",len(Table.columns))
Verwenden Sie die folgende Zelle, um die Zeilen des Datensatzes anzuzeigen. In diesem Beispiel ist die Anzahl der Zeilen auf fünf begrenzt.
Table.head(5)
Sobald Sie wissen, welche Daten im Datensatz enthalten sind, kann es nützlich sein, den Datensatz weiter aufzuschlüsseln. In diesem Beispiel werden die Spaltennamen und Datentypen für jede Spalte aufgelistet, während die Ausgabe verwendet wird, um zu überprüfen, ob der Datentyp korrekt ist oder nicht.
ColumnNames_Types = pd.DataFrame(Table.dtypes)
ColumnNames_Types = ColumnNames_Types.reset_index()
ColumnNames_Types.columns = ["Column_Name", "Data_Type"]
ColumnNames_Types
Untersuchen von Datensatz-Trends
Der folgende Abschnitt enthält vier Beispielabfragen, mit denen Trends und Muster in Daten untersucht werden. Die folgenden Beispiele sind nicht vollständig, decken jedoch einige der am häufigsten angesehenen Funktionen ab.
Stündliche Aktivitätsanzahl für einen bestimmten Tag
Diese Abfrage analysiert die Anzahl der Aktionen und Klicks über den ganzen Tag. Die Ausgabe wird in Form einer Tabelle mit Metriken zur Aktivitätsanzahl für jede Stunde des Tages dargestellt.
%%read_sql query_2_df -c QS_CONNECTION
SELECT Substring(timestamp, 12, 2) AS Hour,
Count(enduserids._experience.aaid.id) AS Count
FROM {target_table}
WHERE Year(timestamp) = {target_year}
AND Month(timestamp) = {target_month}
AND Day(timestamp) in {target_day}
GROUP BY Hour
ORDER BY Hour;
Nach Bestätigung, dass die Abfrage funktioniert, können die Daten in einem univariaten Histogramm dargestellt werden, um die Übersichtlichkeit zu erhöhen.
trace = go.Bar(
x = query_2_df['Hour'],
y = query_2_df['Count'],
name = "Activity Count"
)
layout = go.Layout(
title = 'Activity Count by Hour of Day',
width = 1200,
height = 600,
xaxis = dict(title = 'Hour of Day'),
yaxis = dict(title = 'Count')
)
fig = go.Figure(data = [trace], layout = layout)
iplot(fig)
Top 10 der angezeigten Seiten für einen bestimmten Tag
Diese Abfrage analysiert, welche Seiten an einem bestimmten Tag am häufigsten angezeigt wurden. Die Ausgabe wird in Form einer Tabelle mit Metriken zum Seitennamen und zur Anzahl der Seitenansichten dargestellt.
%%read_sql query_4_df -c QS_CONNECTION
SELECT web.webpagedetails.name AS Page_Name,
Sum(web.webpagedetails.pageviews.value) AS Page_Views
FROM {target_table}
WHERE Year(timestamp) = {target_year}
AND Month(timestamp) = {target_month}
AND Day(timestamp) in {target_day}
GROUP BY web.webpagedetails.name
ORDER BY page_views DESC
LIMIT 10;
Nach Bestätigung, dass die Abfrage funktioniert, können die Daten in einem univariaten Histogramm dargestellt werden, um die Übersichtlichkeit zu erhöhen.
trace = go.Bar(
x = query_4_df['Page_Name'],
y = query_4_df['Page_Views'],
name = "Page Views"
)
layout = go.Layout(
title = 'Top Ten Viewed Pages For a Given Day',
width = 1000,
height = 600,
xaxis = dict(title = 'Page_Name'),
yaxis = dict(title = 'Page_Views')
)
fig = go.Figure(data = [trace], layout = layout)
iplot(fig)
Top 10 der Städte gruppiert nach Benutzeraktivität
Diese Abfrage analysiert, aus welchen Städten die Daten stammen.
%%read_sql query_6_df -c QS_CONNECTION
SELECT concat(placeContext.geo.stateProvince, ' - ', placeContext.geo.city) AS state_city,
Count(timestamp) AS Count
FROM {target_table}
WHERE Year(timestamp) = {target_year}
AND Month(timestamp) = {target_month}
AND Day(timestamp) in {target_day}
GROUP BY state_city
ORDER BY Count DESC
LIMIT 10;
Nach Bestätigung, dass die Abfrage funktioniert, können die Daten in einem univariaten Histogramm dargestellt werden, um die Übersichtlichkeit zu erhöhen.
trace = go.Bar(
x = query_6_df['state_city'],
y = query_6_df['Count'],
name = "Activity by City"
)
layout = go.Layout(
title = 'Top Ten Cities by User Activity',
width = 1200,
height = 600,
xaxis = dict(title = 'City'),
yaxis = dict(title = 'Count')
)
fig = go.Figure(data = [trace], layout = layout)
iplot(fig)
Top 10 der angezeigten Produkte
Diese Abfrage liefert eine Liste der zehn am häufigsten angezeigten Produkte. Im folgenden Beispiel wird die Funktion Explode()
verwendet, um jedes Produkt im Objekt productlistitems
in einer eigenen Zeile zurückzugeben. Auf diese Weise können Sie eine verschachtelte Abfrage ausführen, um Produktansichten für verschiedene SKUs zu aggregieren.
%%read_sql query_7_df -c QS_CONNECTION
SELECT Product_List_Items.sku AS Product_SKU,
Sum(Product_Views) AS Total_Product_Views
FROM (SELECT Explode(productlistitems) AS Product_List_Items,
commerce.productviews.value AS Product_Views
FROM {target_table}
WHERE Year(timestamp) = {target_year}
AND Month(timestamp) = {target_month}
AND Day(timestamp) in {target_day}
AND commerce.productviews.value IS NOT NULL)
GROUP BY Product_SKU
ORDER BY Total_Product_Views DESC
LIMIT 10;
Nach Bestätigung, dass die Abfrage funktioniert, können die Daten in einem univariaten Histogramm dargestellt werden, um die Übersichtlichkeit zu erhöhen.
trace = go.Bar(
x = "SKU-" + query_7_df['Product_SKU'],
y = query_7_df['Total_Product_Views'],
name = "Product View"
)
layout = go.Layout(
title = 'Top Ten Viewed Products',
width = 1200,
height = 600,
xaxis = dict(title = 'SKU'),
yaxis = dict(title = 'Product View Count')
)
fig = go.Figure(data = [trace], layout = layout)
iplot(fig)
Nachdem Sie die Trends und Muster der Daten untersucht haben, sollten Sie eine gute Vorstellung davon haben, welche Funktionen Sie zur Prognose eines Ziels erstellen möchten. Bei der Durchsicht von Tabellen können die Form jedes Datenattributs, offensichtliche Fehldarstellungen und große Ausreißer in den Werten schnell hervorgehoben werden. Außerdem ist dies ein Ausgangspunkt, um Beziehungen zwischen den Attributen zwecks Untersuchung vorzuschlagen.