python plotly:在数据帧中使用列的框图

时间:2017-09-06 16:49:00

标签: python pandas plotly boxplot

我喜欢使用情节,并希望为我的数据绘制箱线图。

在他们的网站上,我会做以下事情:

import plotly.plotly as py
import plotly.graph_objs as go

import numpy as np

y0 = np.random.randn(50)
y1 = np.random.randn(50)+1

trace0 = go.Box(
    y=y0,
    name = 'Sample A',
    marker = dict(
        color = 'rgb(214, 12, 140)',
    )
)
trace1 = go.Box(
    y=y1,
    name = 'Sample B',
    marker = dict(
        color = 'rgb(0, 128, 128)',
    )
)
data = [trace0, trace1]
py.iplot(data)

我遇到的挑战是我不知道" trace"的总数。不明。例如:

titanic = pd.read_csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic3.csv")

我想绘制一个箱形图,按照列“开始”,这是“票价”的箱线图。柱。由于“已开始”中的唯一值总数。是不知道的,我不想硬编码。

有谁知道我怎么能在情节上做得恰到好处?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以在embarked中循环显示您的唯一值,并为每个值添加一个跟踪。在这种情况下,还有nan需要单独处理。

for embarked in titanic.embarked.unique():

enter image description here

import plotly
plotly.offline.init_notebook_mode()
import pandas as pd
import numpy as np

titanic = pd.read_csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic3.csv")

traces = list()
for embarked in titanic.embarked.unique():
    if str(embarked) == 'nan':
       traces.append(plotly.graph_objs.Box(y=titanic[pd.isnull(titanic.embarked)].fare,
                                            name = str(embarked)
                                            )
                     )
    else:
        traces.append(plotly.graph_objs.Box(y=titanic[titanic.embarked == embarked].fare,
                                            name = embarked
                                            )
                     )
plotly.offline.iplot(traces)