Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

distribution: 관측값의 분포

foundryts.functions.distribution(
    start=None, end=None, start_value=None, end_value=None, bins=None
)

숫자형 시계열 하나 또는 여러 개의 값을 같은 폭의 버킷으로 나누어 관측 수를 구하는 함수를 반환합니다. 여러 입력을 전달하면 모든 입력의 관측을 함께 집계합니다. 같은 값이 여러 점에 나타나면 각 관측을 셉니다.

입력은 FunctionNode 또는 NodeCollection이며 반환값은 SummarizerNode입니다. 범주형 시계열에는 적용하지 않습니다.

인수와 범위

인수형식동작
startint, datetime 또는 str포함하는 시작 시각. 기본 None이면 입력의 전체 시간 범위 사용
endint, datetime 또는 str제외하는 종료 시각. 기본 None이면 입력의 전체 시간 범위 사용
start_valuefloat포함하는 값의 하한. 기본 None이면 모든 입력의 최솟값을 기준으로 설정
end_valuefloat제외하는 값의 상한. 기본 None이면 모든 입력의 최댓값을 기준으로 설정
binsint버킷 수. None으로 생략하면 10개

버킷 폭 delta는 설정한 값 범위의 폭을 버킷 수로 나눈 값입니다. 모든 관측을 자동 범위로 집계할 때와 상한 end_value를 직접 지정할 때를 구분합니다. 예제의 자동 범위는 최대 관측값도 집계합니다.

출력 스키마

열형식의미
start_timestampdatetime계산 시간 범위의 시작
end_timestampdatetime계산 시간 범위의 끝, 제외
startfloat값 범위의 시작
endfloat값 범위의 끝
deltafloat모든 버킷에 공통인 폭
distribution_values.startfloat버킷 시작 값
distribution_values.endfloat버킷 끝 값
distribution_values.countint해당 버킷의 관측 수

가상 입력

두 시계열의 관측 시각은 나노초입니다.

from foundryts import NodeCollection
import foundryts.functions as F

series_1 = F.points(
    (1, 0.0),
    (101, 10.2),
    (200, 11.3),
    (201, 11.1),
    (299, 11.2),
    (300, 12.0),
    (400, 11.7),
    (500, 16.0),
    (123450, 11.8),
    name="series-1",
)
series_2 = F.points(
    (1, 0.5),
    (101, 0.2),
    (200, 1.3),
    (201, 0.1),
    (299, 1.2),
    (300, 1.4),
    (400, 1.0),
    (500, 2.0),
    (123450, 1.0),
    name="series-2",
)
collection = NodeCollection(series_1, series_2)

시계열 하나의 세 버킷

single_distribution = F.distribution(bins=3)(series_1)
single_df = single_distribution.to_pandas()

가상 결과의 값 범위는 0부터 16이며 delta는 약 5.333333입니다.

distribution_values.startdistribution_values.enddistribution_values.count
0.05.3333331
5.33333310.6666671
10.66666716.07

각 행의 start는 0.0, end는 16.0입니다. 예제의 공통 시간 메타데이터는 start_timestamp가 1677-09-21 00:12:43.145225216, end_timestamp가 2262-01-01 00:00:00입니다. 이 값은 각 실제 관측의 첫 시각이나 마지막 시각과 구분합니다.

여러 시계열을 함께 집계

combined_distribution = F.distribution(bins=3)(collection)
combined_df = combined_distribution.to_pandas()

series-2의 아홉 관측은 모두 첫 버킷에 들어갑니다. 값이 1.0인 두 관측도 각각 집계하므로 첫 버킷은 10개입니다.

distribution_values.startdistribution_values.enddistribution_values.count
0.05.33333310
5.33333310.6666671
10.66666716.07

delta, start, end와 시간 메타데이터는 위 단일 시계열 예제와 같습니다. 시계열마다 분포를 따로 만들려면 NodeCollection.map을 사용합니다. 통계 요약은 statistics, 두 시계열의 대응 값은 scatter에서 다룹니다.