Из широкого формата в длинный — Fold

Преобразование fold позволяет напрямую преобразовать данные из широкого формата в длинный без предварительной обработки. Подробнее об этих форматах см. «Длинный и широкий форматы». Это преобразование противоположно преобразованию pivot.

Если несколько столбцов содержат параллельные данные для разных категорий, с помощью fold можно кодировать данные по этим категориям:

import numpy as np
import pandas as pd
import altair as alt

rand = np.random.RandomState(0)
data = pd.DataFrame({
    'date': pd.date_range('2019-01-01', freq='D', periods=30),
    'A': rand.randn(30).cumsum(),
    'B': rand.randn(30).cumsum(),
    'C': rand.randn(30).cumsum(),
})

alt.Chart(data).transform_fold(
    ['A', 'B', 'C'],
).mark_line().encode(
    x='date:T',
    y='value:Q',
    color='key:N'
)

Здесь fold объединяет все значения указанных столбцов в одно новое поле "value", а соответствующие имена столбцов помещает в поле "key".

Ещё один пример применения fold — диаграмма параллельных координат в галерее.

Параметры преобразования

Метод Chart.transform_fold основан на классе FoldTransform, который поддерживает следующие параметры:

Нажмите, чтобы показать таблицу
СвойствоТипОписание
asarray(FieldName)

Имена выходных полей для ключа и значения, создаваемых преобразованием fold. По умолчанию: ["key", "value"].

foldarray(FieldName)

Массив полей данных, которые нужно преобразовать из широкого формата в длинный.