Erkunden von Daten mit SAP HANA DataFrames

Objective

After completing this lesson, you will be able to verwenden Sie SAP HANA DataFrames für die Datenverarbeitung.

Datenverarbeitung mit SAP HANA DataFrames

In diesem Abschnitt wird erläutert, wie Sie Daten in SAP HANA Cloud mithilfe von SAP HANA DataFrames verwalten und bearbeiten. Das in SAP HANA Cloud vorgeladene Datenset für die kalifornische Unterkunft dient als Beispiel, um dieses Konzept weiter zu veranschaulichen [1].

SAP-HANA-Dataframe in Python anlegen

Ein SAP-HANA-DataFrame bietet eine Möglichkeit, die in SAP HANA gespeicherten Daten anzuzeigen, ohne physische Daten zu enthalten. HANA-ML verwendet einen SAP-HANA-DataFrame als Input für Trainings- und Scoring-Zwecke.

Ein SAP-HANA-DataFrame blendet die zugrunde liegende SQL-Anweisung aus und bietet Benutzern eine Python-Schnittstelle zu SAP-HANA-Daten.

Um einen SAP-HANA-DataFrame zu verwenden, legen Sie zunächst ein Objekt aus der Klasse hana_ml.dataframe.ConnectionContext (eine Verbindung zu SAP HANA) [2] an, und verwenden Sie dann die in der Bibliothek bereitgestellten Methoden, um einen SAP-HANA-DataFrame anzulegen.

Der SAP-HANA-DataFrame kann nur verwendet werden, während die Verbindung geöffnet ist, und kann nicht mehr aufgerufen werden, sobald die Verbindung geschlossen wurde. Die vollständige Dokumentation zu den verfügbaren Klassen und Funktionen finden Sie unter [3].

Referenzen

[1] Wohnungsdatenset Kalifornien

[2] SAP-Klasse hana_ml.dataframe.ConnectionContext

[3] SAP hana_ml.dataframe

Auswahl von Daten aus der angegebenen Tabelle

Die Methode ConnectionContext.table() gibt einen DataFrame zurück, der die angegebene Tabelle darstellt, d.h. "california_housing", und das zugehörige Schema, d.h. "ML_DEMO" [1]. Anschließend zeigen wir die SQL-Abfrage an, die den DataFrame sichert.

Um das Datenset zu prüfen, werden die Spaltennamen des DataFrame und ihre Datentypen angezeigt.

Python
12
hdf = conn.table("california_housing", schema="ML_DEMO") print(hdf.select_statement)

Ausgabe:

SELECT * FROM "ML_DEMO"."california_housing"

Python
1
print(hdf.columns)

Ausgabe:

['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude', 'Target']

Python
1
print(hdf.dtypes())

Ausgabe:

[('MedInc', 'DOUBLE', 15, 15, 15, 0), ('HouseAge', 'DOUBLE', 15, 15, 15, 15, 0), ('AveBedrms', 'DOUBLE', 'DOUBLE' 0, 'DOULE', 'ULE', 'ULE 15', 'ULE', 'ULE', 'ULE', 'ULE', 'ULE', 'ULE', 'ULE', 'ULE', 'ULE',

Referenzen

[1] SAP hana_ml.dataframe - ConnectionContext.table()

Wie angegeben, werden die ersten fünf Beobachtungen des SAP DataFrame angezeigt. Anschließend kopiert die Methode DataFrame.collection() den aktuellen DataFrame in einen neuen Python-Panda-DataFrame [1].

Python
12
#Only the use of the collect method, transfers data or result sets from SAP HANA to Python hdf.head(5).collect()

Ausgabe:

 MedErhHouseAgeAveRoomsAveBedrmsPopulationAveOccupBreitengradLängengradZiel
01.2452.02.920.91396.04.6537.80-122.275.00
11.1652.02.430.941349.05.3937.87-122.255.00
27.8552.07.791.05517.02.4137.86-122.245.00
39.3952.07.510,951366.02.7537.85-122.245.00
47.8752.08.281.04947.02.6237.83-122.235.00

Referenzen

[1] SAP-Methode hana_ml.dataframe - ConnectionContext.table()

Datenattribute analysieren

Datenmanipulation und -analyse sind im Bereich Data Science von entscheidender Bedeutung. Die SAP-Klassenmethode DataFrame.description() liefert einen DataFrame zurück, der verschiedene Statistiken von Datenattributen oder Spalten [1] enthält.

Zu solchen beschreibenden Statistiken gehören auch solche, die die zentrale Tendenz, Streuung und Form der Verteilung eines Datensatzes zusammenfassen. Dies hilft dabei, Daten sinnvoll zu organisieren und darzustellen.

Beispielsweise zeigt die Zeile mit der Nummer 3 (siehe unten) die Statistik für die Spalte 'AveBedrms' an. Diese Spalte stellt die durchschnittliche Anzahl der Schlafzimmer pro Haushalt dar. Sie stellen fest, dass die restlichen Spalten des Datensets 20,640 Beobachtungen enthalten. Er hat keine Nullwerte und sein Mittelwert ist '1.09'; er kann jedoch Werte von mindestens '0,33' bis zu einem Maximalwert von '34,06' annehmen. Interessanterweise ist der Median '1.04' [4]. Beachten Sie, dass der Medianwert den Mittelwert eines Datensets darstellt.

Python
1
hdf.describe().collect()
 SpalteZählungEindeutigNullenMittelwertStdMin.Max.Median25_percent_cont25_Prozent Disc50_percent_cont50_Prozent Disc75_percent_cont75_Prozent Disc
0MedErh206401292803.871.890.4915.003.532.562.563.533.534.744.74
1HouseAge2064052028.6312.581,0052.0029,0018.0018.0029,0029,0037.0037,00
2AveRooms206401939205.422.470.84141.905.224.444.445.225.226.056.05
3AveBedrms206401423301.090.470.3334.061.041,001,001.041.041.091.09
4Population20640388801425.471132.463.0035682.001166.00787.00787.001166,001166,001725.001725,00
5AveOccup206401884103.0710.380.691243.332.812.422.422.812.813.283.28
6Breitengrad20640862035.632.1332.5441.9534.2633.9333.9334.2634.2637.7137.71
7Längengrad206408440-119.562.00-124.35-114.31-118.49-121.80-121,80-118.49-118.49-118.01-118.01
8Ziel20640384202.0681.150.145.001.791.191.191.791.792.642.64

Referenzen

[1] SAP-Methode hana_ml.dataframe - DataFrame.description()

[2] Statistik: Median

SAP-HANA-DataFrame-Filterung

Es können Zeilen ausgewählt werden, die den gegebenen Bedingungen entsprechen.

Der folgende Code wählt beispielsweise die Teilmenge der Zeilen aus, bei denen die "Population" größer als "300" ist. Die ersten fünf Zeilen werden dann angezeigt, um zu bestätigen, dass alle Populationswerte 300 überschreiten.

Python
1
hdf_filter=hdf.filter('"Population">300')
Python
1
print(hdf_filter.select_statement)

Ausgabe:

SELECT * FROM (SELECT * FROM "ML_DEMO"."california_housing") AS "DT_258" WHERE "Population">300

Python
1
hdf_filter.head(5).collect()
 MedErhHouseAgeAveRoomsAveBedrmsPopulationAveOccupBreitengradLängengradZiel
01.2452.02.920,91396.04.6537,80-122.275.00
11.1652.02.430,941349.05.3937,87-122,255.00
27.8552.07.791.05517.02.4137.86-122.245.00
39.3952.07.510,951366.02.7537,85-122.245.00
47.8752.08.281.04947.02.6237,83-122.235.00

Visuelle Datenexploration mit SAP HANA DataFrame

Deskriptive Statistiken umfassen auch eine grafische Darstellung von Daten über Plots. Sie können außerdem bei der Visualisierung und Interpretation der Informationen helfen.

Durch die Verwendung beschreibender Statistiken können Sie die Haupteigenschaften eines Datensets zusammenfassen und teilen. Daher erhalten Sie tiefere Einblicke in die Daten, um Folgendes zu unterstützen:

  • Weitere statistische Analysen
  • Entscheidungsfindungsprozesse

Sie können die SAP-HANA-Funktionen [1] verwenden, um ein Verteilungsdiagramm für die SAP-HANA-DataFrame-Spalte mit dem Namen "Population" zu visualisieren.

Python
1234567891011
#Exploratory Data Visualizations from hana_ml.visualizers.eda import EDAVisualizer start = time.time() eda = EDAVisualizer(enable_plotly=True) fig, trace, bin_data = eda.distribution_plot(data=hdf, debrief=True, column="Population", bins=60, x_axis_fontsize=13, x_axis_rotation=1, width=600, title="Distribution of feature: Population", height=400) fig.show() end = time.time() print("Time taken to do this by getting the data from the server was: {}s".format(round(end-start, 3)))

Ausgabe:

Die Zeit, die zum Abrufen der Daten vom Server benötigt wird, betrug: 0,08s

Ein Verteilungsdiagramm der Populationsfunktion.

Referenzen

[1] SAP hana_ml.visualizers.eda - EDAVisualizer.distribution_plot

Hinzufügen eines Index zum Datenset

Beachten Sie, dass das Datenset eine 'ID'-Spalte haben muss, um es in disjunkte Teilmengen zu partitionieren. Er wird vom Partitionierungsalgorithmus [1] benötigt, der später verwendet wird, um die Teilmengen "Training" und "Testen" abzuleiten, die die Ausführung des Workflows für maschinelles Lernen unterstützen.

Stellen Sie sicher, dass diese Spalte im Datenset enthalten ist, wie unten gezeigt.

 IDMedErhHouseAgeAveRoomsAveBedrmsPopulationAveOccupBreitengradLängengradZiel
011.2452.02.920.91396.04.6537.80-122.275.00
121.1652.02.430.941349.05.3937.87-122.255.00
237.8552.07.791.05517.02.4137.86-122.245.00
349.3952.07.510,951366.02.7537.85-122.245.00
457.8752.08.281.04947.02.6237.83-122.235.00

Referenzen

[1] SAP-Algorithmus hana_ml.algorithms.pal.partition - train_test_val_split.