展平#
展平转换可用于从数据条目中提取数组内容。这对于pandas数据帧中结构良好的数据通常不是很有用,但对于处理来自其他源的数据可能会很有用。
例如,考虑这个数据集,它使用JSON数据中常见的约定,即一组字段,每个字段包含一个条目列表
import numpy as np
rand = np.random.RandomState(0)
def generate_data(N):
mean = rand.randn()
std = rand.rand()
return list(rand.normal(mean, std, N))
data = [
{'label': 'A', 'values': generate_data(20)},
{'label': 'B', 'values': generate_data(30)},
{'label': 'C', 'values': generate_data(40)},
{'label': 'D', 'values': generate_data(50)},
]
这种数据结构在数据帧表示的上下文中效果不佳,正如我们将其加载到pandas中可以看到的
import pandas as pd
df = pd.DataFrame.from_records(data)
df
label values
0 A [2.005252455842496, 0.39678718138566277, 2.567...
1 B [1.1906228762083413, -1.6927165224630423, -0.5...
2 C [0.3901956756272385, 1.4135072065946024, 0.603...
3 D [1.0035211072316703, 1.1414240499680273, 1.883...
Altair的展平转换允许您将这些数组的内容提取到一个可以通过编码引用的列中
import altair as alt
alt.Chart(df).transform_flatten(
['values']
).mark_tick().encode(
x='values:Q',
y='label:N',
)
这在清理通过JSON URL指定的数据时特别有用,而无需首先加载数据在pandas中进行操作。
转换选项#
方法 transform_flatten()
构建于类 FlattenTransform
之上,该类具有以下选项