我正在尝试创建一个情节性的旭日图,但收到错误消息:“dtype:对象,”不是叶子。

San*_*oek 4 python pandas plotly sunburst-diagram

我正在尝试创建一个旭日图,其中不同的行具有不同的长度,并收到错误消息“dtype:对象,”不是叶子。我读过这篇文章“请注意,None 条目的父项必须是叶子,即它不能有除 None 之外的其他子项(否则会引发 ValueError)”。在情节页面上https://plotly.com/python/sunburst-charts/#rectangle-data-with-missing-values但不完全理解这一点。

我有一个更大的数据集,但同样的情况也发生在这个数据集上:

testdf = pd.DataFrame(
[['Max',10,'M','a', 'x',None],
['Ma',5, 'M', 'a', None,None],
['Johan',6, 'J','o','h','a']],
index=[1, 2, 3],
columns=['First_Name','Count','a', 'b', 'c','d'])
testdf

fig=px.sunburst(testdf,path=['a','b','c','d'],values='Count')
fig.show()
Run Code Online (Sandbox Code Playgroud)

值错误是这样的:

ValueError: ('数据帧中不允许出现非叶子行\n',a M ba c
d
名称:1,dtype:对象,'不是叶子。')

所以我认为这是由于字母 a 不是叶子,因为第一行的 x 也附加到它,但我想让旭日停止在第二行的字母 a 处,并在第一行字母 x。任何帮助是极大的赞赏!

小智 6

此处对此进行了解释: https: //community.plotly.com/t/sunburst-chart-cant-handle-none-values/35383

基本上,如果你有一个None值,它的父母必须是唯一的。在您的示例中,第一行有效。第二个不是因为["M", "a", None, None]与 共享同一个父级["M", "a", "x", None]

事实上,如果你运行下面的命令,它就会起作用。

testdf = pd.DataFrame([
    ['Max', 10, 'M', 'a', 'x', None],
    ['Ma', 5, 'M', 'a', 'd', None],
    ['Johan', 6, 'J', 'o', 'h', 'a']],
    index=[1, 2, 3],
    columns=['First_Name', 'Count', 'a', 'b', 'c', 'd'])

testdf

fig = px.sunburst(testdf, path=['a', 'b', 'c', 'd'], values='Count')
Run Code Online (Sandbox Code Playgroud)