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
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.
12hdf = conn.table("california_housing", schema="ML_DEMO")
print(hdf.select_statement)Ausgabe:
SELECT * FROM "ML_DEMO"."california_housing"
1print(hdf.columns)Ausgabe:
['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude', 'Target']
1print(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].
12#Only the use of the collect method, transfers data or result sets from SAP HANA to Python
hdf.head(5).collect()Ausgabe:
| MedErh | HouseAge | AveRooms | AveBedrms | Population | AveOccup | Breitengrad | Längengrad | Ziel | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 1.24 | 52.0 | 2.92 | 0.91 | 396.0 | 4.65 | 37.80 | -122.27 | 5.00 |
| 1 | 1.16 | 52.0 | 2.43 | 0.94 | 1349.0 | 5.39 | 37.87 | -122.25 | 5.00 |
| 2 | 7.85 | 52.0 | 7.79 | 1.05 | 517.0 | 2.41 | 37.86 | -122.24 | 5.00 |
| 3 | 9.39 | 52.0 | 7.51 | 0,95 | 1366.0 | 2.75 | 37.85 | -122.24 | 5.00 |
| 4 | 7.87 | 52.0 | 8.28 | 1.04 | 947.0 | 2.62 | 37.83 | -122.23 | 5.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.
1hdf.describe().collect()| Spalte | Zählung | Eindeutig | Nullen | Mittelwert | Std | Min. | Max. | Median | 25_percent_cont | 25_Prozent Disc | 50_percent_cont | 50_Prozent Disc | 75_percent_cont | 75_Prozent Disc | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | MedErh | 20640 | 12928 | 0 | 3.87 | 1.89 | 0.49 | 15.00 | 3.53 | 2.56 | 2.56 | 3.53 | 3.53 | 4.74 | 4.74 |
| 1 | HouseAge | 20640 | 52 | 0 | 28.63 | 12.58 | 1,00 | 52.00 | 29,00 | 18.00 | 18.00 | 29,00 | 29,00 | 37.00 | 37,00 |
| 2 | AveRooms | 20640 | 19392 | 0 | 5.42 | 2.47 | 0.84 | 141.90 | 5.22 | 4.44 | 4.44 | 5.22 | 5.22 | 6.05 | 6.05 |
| 3 | AveBedrms | 20640 | 14233 | 0 | 1.09 | 0.47 | 0.33 | 34.06 | 1.04 | 1,00 | 1,00 | 1.04 | 1.04 | 1.09 | 1.09 |
| 4 | Population | 20640 | 3888 | 0 | 1425.47 | 1132.46 | 3.00 | 35682.00 | 1166.00 | 787.00 | 787.00 | 1166,00 | 1166,00 | 1725.00 | 1725,00 |
| 5 | AveOccup | 20640 | 18841 | 0 | 3.07 | 10.38 | 0.69 | 1243.33 | 2.81 | 2.42 | 2.42 | 2.81 | 2.81 | 3.28 | 3.28 |
| 6 | Breitengrad | 20640 | 862 | 0 | 35.63 | 2.13 | 32.54 | 41.95 | 34.26 | 33.93 | 33.93 | 34.26 | 34.26 | 37.71 | 37.71 |
| 7 | Längengrad | 20640 | 844 | 0 | -119.56 | 2.00 | -124.35 | -114.31 | -118.49 | -121.80 | -121,80 | -118.49 | -118.49 | -118.01 | -118.01 |
| 8 | Ziel | 20640 | 3842 | 0 | 2.068 | 1.15 | 0.14 | 5.00 | 1.79 | 1.19 | 1.19 | 1.79 | 1.79 | 2.64 | 2.64 |
Referenzen
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.
1hdf_filter=hdf.filter('"Population">300') 1print(hdf_filter.select_statement)Ausgabe:
SELECT * FROM (SELECT * FROM "ML_DEMO"."california_housing") AS "DT_258" WHERE "Population">300
1hdf_filter.head(5).collect()| MedErh | HouseAge | AveRooms | AveBedrms | Population | AveOccup | Breitengrad | Längengrad | Ziel | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 1.24 | 52.0 | 2.92 | 0,91 | 396.0 | 4.65 | 37,80 | -122.27 | 5.00 |
| 1 | 1.16 | 52.0 | 2.43 | 0,94 | 1349.0 | 5.39 | 37,87 | -122,25 | 5.00 |
| 2 | 7.85 | 52.0 | 7.79 | 1.05 | 517.0 | 2.41 | 37.86 | -122.24 | 5.00 |
| 3 | 9.39 | 52.0 | 7.51 | 0,95 | 1366.0 | 2.75 | 37,85 | -122.24 | 5.00 |
| 4 | 7.87 | 52.0 | 8.28 | 1.04 | 947.0 | 2.62 | 37,83 | -122.23 | 5.00 |
