Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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 对从大型数据集中聚合的数据使用Altair_Python_Data Visualization_Data Science_Altair_Vega Lite - Fatal编程技术网

Python 对从大型数据集中聚合的数据使用Altair

Python 对从大型数据集中聚合的数据使用Altair,python,data-visualization,data-science,altair,vega-lite,Python,Data Visualization,Data Science,Altair,Vega Lite,我正在尝试对一个大型(300000条记录)时态数据集进行柱状图计数。我现在只想按月计算柱状图,它只有6个数据点,但使用json或altair_data_服务器存储这样做会导致页面崩溃。用纯牵牛星是不可能处理好的吗?我当然可以对熊猫进行预处理,但这破坏了牵牛星奇妙的陈述性 如果是这样的话,这是牵牛星缺少的功能还是超出了范围?我了解到vegalite存储了整个底层数据,并在运行时应用了转换,但似乎altair可以(也可能确实)只存储图表的相关数据 alt.Chart(df).mark_bar().e

我正在尝试对一个大型(300000条记录)时态数据集进行柱状图计数。我现在只想按月计算柱状图,它只有6个数据点,但使用json或altair_data_服务器存储这样做会导致页面崩溃。用纯牵牛星是不可能处理好的吗?我当然可以对熊猫进行预处理,但这破坏了牵牛星奇妙的陈述性

如果是这样的话,这是牵牛星缺少的功能还是超出了范围?我了解到vegalite存储了整个底层数据,并在运行时应用了转换,但似乎altair可以(也可能确实)只存储图表的相关数据

alt.Chart(df).mark_bar().encode(
    x=alt.X('month(timestamp):T'),
    y='count()'
)

Altair图表通过将整个数据集发送到浏览器并在前端进行处理来工作;因此,无论数据集如何提供给前端,它都不能很好地适用于较大的数据集

在像您这样的情况下,在显示数据之前聚合数据,理论上可以在后端进行聚合,并且只将聚合数据发送到前端渲染器。有一些项目希望使这一点更加无缝,包括和,但这两种方法都还不成熟

同时,我建议您在熊猫中进行聚合,并将聚合数据发送到Altair进行绘图。

请尝试以下操作:-

alt.data_transformers.enable('default', max_rows=None)
然后

alt.Chart(df).mark_bar().encode(
    x=alt.X('month(timestamp):T'),
    y='count()'
)

您将获得图表,但如果浏览器崩溃,请确保保存所有工作。

谢谢您的回答和altair!牵牛星变换是否正在进行中?如果可以的话,我会有兴趣贡献的。有了这个,世界将变得更加美丽!功能的外壳就在那里——在存储库中搜索TODO以查看需要工作的地方。另一个更复杂的部分是将聚合从编码中推到转换中。仅供参考-我为altair_transform添加了一些功能,现在应该支持此用例。再见。谢谢你的通知。我已经完成了这项工作,正在了解一般的工作原理,并将看看是否可以实现任何TODOsPlease,而不仅仅是在不考虑后果的情况下设置max_rows=None。如果页面与问题中提到的
json
转换器或数据服务器转换器崩溃,那么禁用max_行肯定会做同样的事情,此外还会将整个序列化数据集添加到单元格输出中,如果保存,则当您再次尝试使用笔记本时,可能会在加载时使浏览器崩溃。@jakevdp我在回答中也提到过这一点!我不知道你为什么投了反对票。但有时你有6000行,却没有完成。在这种情况下,这是最简单的解决方案。