이 섹션에서는 SAP HANA DataFrame을 사용하여 SAP HANA Cloud에서 데이터를 관리하고 조작하는 방법에 대해 설명합니다. SAP HANA Cloud에 사전 로드된 캘리포니아 하우징 데이터세트는 이 개념을 더 자세히 설명하는 예시로 사용됩니다[1].
Python에서 HANA 데이터 프레임 생성
SAP HANA DataFrame은 실제 데이터를 포함하지 않고 SAP HANA에 저장된 데이터를 볼 수 있는 방법을 제공합니다. HANA-ML은 SAP HANA DataFrame을 훈련 및 채점을 위한 입력으로 사용합니다.
SAP HANA DataFrame은 기본 SQL 문을 숨겨 사용자에게 SAP HANA 데이터에 대한 Python 인터페이스를 제공합니다.
SAP HANA DataFrame을 사용하려면 먼저 hana_ml.dataframe.ConnectionContext 클래스(SAP HANA에 연결) [2]에서 오브젝트를 생성한 다음 라이브러리에 제공된 메소드를 사용하여 SAP HANA DataFrame을 생성합니다.
SAP HANA DataFrame은 연결이 열려 있는 동안에만 사용할 수 있으며 연결이 닫히면 액세스할 수 없습니다. 사용 가능한 클래스 및 함수에 대한 전체 문서는 [3]을(를) 참조하십시오.
참조
[1] 캘리포니아 하우징 데이터세트
지정된 테이블에서 데이터 선택
ConnectionContext.table() 메소드는 지정된 테이블을 나타내는 DataFrame, 즉 "california_housing" 및 관련 스키마(즉, "ML_DEMO" [1])를 반환합니다. 그런 다음 DataFrame을 백업하는 SQL 쿼리를 표시합니다.
데이터세트를 검사하기 위해 DataFrame의 열 이름과 해당 데이터 유형이 표시됩니다.
12hdf = conn.table("california_housing", schema="ML_DEMO")
print(hdf.select_statement)출력:
SELECT * FROM "ML_DEMO"."california_housing"
1print(hdf.columns)출력:
['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude', 'Target']
1print(hdf.dtypes())출력:
[('MedInc', 'DOUBLE', 15, 15, 15, 15, 15, 0), ('HouseAge', 'DOUBLE', 'DOUBLE', 15, 15, 15, 15, 15, 15, 15th), ('AveRooms', 'DOUBLE', 'DOUBLE', 'DOUBLE', 'DOUBLE', 'DOUBLE', 15), ('AveBedr', 'DOUBLE', 'DOUBLE', 'DOUBLE', 15세, ('AveBLE', 'DOUBLE', 'DOUBLE'), ('AveBedrms', 'DOUBLE', '15, 15, 15, itude, ('Population', 'DOUBLE, 'DOBLE', 'DOUBLE'), ('AveBedrms', 'DOUBLE', '15, 15, itude, 0), ('Population', 'DOUBLE', 'DOUBLE'
참조
[1] SAP hana_ml.dataframe - ConnectionContext.table()
주어진 대로 SAP DataFrame의 처음 5개 관찰값이 표시되면 DataFrame.collect() 메소드가 현재 DataFrame을 새로운 Python Pandas DataFrame [1]에 복사합니다.
12#Only the use of the collect method, transfers data or result sets from SAP HANA to Python
hdf.head(5).collect()출력:
| MedInc | 가구 연령 | AveRooms | AveBedrms | 인구 | AveOccup | 위도 | 경도 | 대상 | |
|---|---|---|---|---|---|---|---|---|---|
| 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 |
참조
데이터 특성 분석
데이터 조작 및 분석은 데이터 과학 분야에서 매우 중요합니다. SAP 클래스 메소드 DataFrame.describe() 는 데이터 특성 또는 열의 다양한 통계가 포함된 DataFrame 을 리턴합니다.
이러한 설명 통계에는 데이터 집합 분포의 중심 경향, 분산 및 모양을 요약하는 통계도 포함됩니다. 이를 통해 의미 있는 방식으로 데이터를 구성하고 표시할 수 있습니다.
예를 들어 숫자 3(아래 표시)으로 레이블이 지정된 행은 'AveBedrms' 열에 대한 통계를 표시합니다. 이 열은 가구당 평균 침실 수를 나타냅니다. 나머지 데이터세트 열로 '20,640' 관찰값이 있음을 알 수 있습니다. NULL 값이 없고 평균값은 '1.09'이지만 최소 '0.33'에서 최대값 '34.06'으로 값을 가져올 수 있습니다. 흥미롭게도 중앙값은 '1.04' [4]입니다. 중앙값은 데이터세트의 중간 값을 나타냅니다.
1hdf.describe().collect()| 열 | 실사 | 고유(Unique) | NULL | 평균 | Std | 최소 | 최대 | 중앙값 | 25_percent_cont | 25_percent_disc | 50_percent_cont | 50_percent_disc | 75_percent_cont | 75_percent_disc | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | MedInc | 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 | 가구 연령 | 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 | 인구 | 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 | 위도 | 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 | 경도 | 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 | 대상 | 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 |
참조
[1] SAP 메소드 hana_ml.dataframe - DataFrame.describes()
[2] 통계: 중앙값
SAP HANA DataFrame 필터링
지정된 조건과 일치하는 행을 선택할 수 있습니다.
예를 들어 다음 코드는 '모집단'이 '300'보다 큰 행의 하위 세트를 선택합니다. 그러면 처음 5개 행이 표시되어 모든 '모집단' 값이 '300'을 초과하는지 확인합니다.
1hdf_filter=hdf.filter('"Population">300') 1print(hdf_filter.select_statement)출력:
SELECT * FROM (SELECT * FROM "ML_DEMO"."california_housing") AS "DT_258" WHERE "Population">300
1hdf_filter.head(5).collect()| MedInc | 가구 연령 | AveRooms | AveBedrms | 인구 | AveOccup | 위도 | 경도 | 대상 | |
|---|---|---|---|---|---|---|---|---|---|
| 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 |
