Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “转换查找”是否节省空间?_Python_Altair - Fatal编程技术网

Python “转换查找”是否节省空间?

Python “转换查找”是否节省空间?,python,altair,Python,Altair,我正在尝试链接几个共享相同数据方面的牵牛星图表。我可以通过将所有数据合并到一个数据框中来实现这一点,但由于数据的性质,合并后的数据框比两个图表中每个图表都需要两个单独的数据框要大得多。这是因为每个图表特有的列对于共享列中的每个条目都有许多重复的行 使用transform\u lookup会比仅使用合并的数据帧节省空间吗,还是transform\u lookup最终会在内部进行整个合并?否,使用transform\u lookup时,整个数据集仍然包含在vegaspec中。您可以通过打印您创建的图

我正在尝试链接几个共享相同数据方面的牵牛星图表。我可以通过将所有数据合并到一个数据框中来实现这一点,但由于数据的性质,合并后的数据框比两个图表中每个图表都需要两个单独的数据框要大得多。这是因为每个图表特有的列对于共享列中的每个条目都有许多重复的行


使用
transform\u lookup
会比仅使用合并的数据帧节省空间吗,还是
transform\u lookup
最终会在内部进行整个合并?

否,使用
transform\u lookup
时,整个数据集仍然包含在vegaspec中。您可以通过打印您创建的图表的json规范看到这一点:

姓名年龄高度
0 25 180
1乔治32 174
2弗雷德39 182
团队成员
01艾伦
乔治
2.1弗雷德
与熊猫合并:

merged = pd.merge(groups, people, how='left',
                  left_on='person', right_on='name')

print(alt.Chart(merged).mark_bar().encode(
    x='mean(age):Q',
    y='group:O'
).to_json())
{
“$schema”:”https://vega.github.io/schema/vega-lite/v4.8.1.json",
“配置”:{
“视图”:{
“连续高度”:300,
“连续宽度”:400
}
},
“数据”:{
“名称”:“数据-b41b97ffc89b39c92e168871d447e720”
},
“数据集”:{
“数据-b41b97ffc89b39c92e168871d447e720”:[
{
“年龄”:25岁,
“集团”:1,
“高度”:180,
“姓名”:“艾伦”,
“人”:“艾伦”
},
{
“年龄”:32岁,
“集团”:1,
“高度”:174,
“姓名”:“乔治”,
“人”:“乔治”
},
{
“年龄”:39岁,
“集团”:1,
“高度”:182,
“姓名”:“弗雷德”,
“人”:“弗雷德”
}
]
},
“编码”:{
“x”:{
“总计”:“平均值”,
“字段”:“年龄”,
“类型”:“定量”
},
“y”:{
“字段”:“组”,
“类型”:“序号”
}
},
“标记”:“条”
}
使用transform lookup,所有数据都在那里,但对于单独的数据集(因此,从技术上讲,使用附加的大括号和转换会占用更多的空间):

{
“$schema”:”https://vega.github.io/schema/vega-lite/v4.8.1.json",
“配置”:{
“视图”:{
“连续高度”:300,
“连续宽度”:400
}
},
“数据”:{
“名称”:“数据-5FE242A79352D1FE243B58AF570C9C6”
},
“数据集”:{
“数据-2b374d1509415e1d327c3a7521f8117c”:[
{
“年龄”:25岁,
“高度”:180,
“姓名”:“艾伦”
},
{
“年龄”:32岁,
“高度”:174,
“姓名”:“乔治”
},
{
“年龄”:39岁,
“高度”:182,
“姓名”:“弗雷德”
}
],
“数据-5fe242a79352d1fe243b588af570c9c6”:[
{
“集团”:1,
“人”:“艾伦”
},
{
“集团”:1,
“人”:“乔治”
},
{
“集团”:1,
“人”:“弗雷德”
}
]
},
“编码”:{
“x”:{
“总计”:“平均值”,
“字段”:“年龄”,
“类型”:“定量”
},
“y”:{
“字段”:“组”,
“类型”:“序号”
}
},
“标记”:“条”,
“转变”:[
{
“发件人”:{
“数据”:{
“名称”:“数据-2b374d1509415e1d327c3a7521f8117c”
},
“字段”:[
“年龄”,
“高度”
],
“键”:“名称”
},
“查找”:“人”
}
]
}
transform\u lookup
与两个数据集的URL一起使用时,可以节省空间:

people = data.lookup_people.url
groups = data.lookup_groups.url
print(alt.Chart(groups).mark_bar().encode(
    x='mean(age):Q',
    y='group:O'
).transform_lookup(
    lookup='person',
    from_=alt.LookupData(data=people, key='name',
                         fields=['age'])
).to_json())
{
“$schema”:”https://vega.github.io/schema/vega-lite/v4.8.1.json",
“配置”:{
“视图”:{
“连续高度”:300,
“连续宽度”:400
}
},
“数据”:{
“url”:”https://vega.github.io/vega-datasets/data/lookup_groups.csv"
},
“编码”:{
“x”:{
“总计”:“平均值”,
“字段”:“年龄”,
“类型”:“定量”
},
“y”:{
“字段”:“组”,
“类型”:“序号”
}
},
“标记”:“条”,
“转变”:[
{
“发件人”:{
“数据”:{
“url”:”https://vega.github.io/vega-datasets/data/lookup_people.csv"
},
“字段”:[
“年龄”,
“高度”
],
“键”:“名称”
},
“查找”:“人”
}
]
}

事实上,我的解释正好相反。如果
people
在其中一列中有一个重复条目(假设每个人有5个组,另一列有
group\u name
,这样在
people
中有3个人,但有15行),那么这看起来会节省空间。@Jessebroom我无法想象你的例子,您能否将该示例的json规范作为另一个答案发布,以显示它们在转换过程中变短的时间?
merged = pd.merge(groups, people, how='left',
                  left_on='person', right_on='name')

print(alt.Chart(merged).mark_bar().encode(
    x='mean(age):Q',
    y='group:O'
).to_json())
print(alt.Chart(groups).mark_bar().encode(
    x='mean(age):Q',
    y='group:O'
).transform_lookup(
    lookup='person',
    from_=alt.LookupData(data=people, key='name',
                         fields=['age'])
).to_json())
people = data.lookup_people.url
groups = data.lookup_groups.url
print(alt.Chart(groups).mark_bar().encode(
    x='mean(age):Q',
    y='group:O'
).transform_lookup(
    lookup='person',
    from_=alt.LookupData(data=people, key='name',
                         fields=['age'])
).to_json())