如何在带有mpl和pandas的箱图中绘制不同长度的数据

时间:2019-03-11 08:20:44

标签: python pandas

我通常使用R进行统计,但是我将学习python,pandas和numpy。

我创建了一个包含不同时间(以天为单位)的df。我事先计算了一下,开张日期和(在最后一个列中)一个数字给出了有关集合的一些信息。

这是df的一部分。 (dft)

  Freigabe Fauf  Transport/Auslagerung  Qualitätsprüfung  Packen  Auslieferung  Gesamt  Komp Werk
0       2018-11-29                    1.0              27.0     2.0           2.0    31.0          0
1       2018-11-30                    0.0              28.0     1.0           2.0    31.0          0
2       2018-06-05                    1.0               9.0     7.0           1.0    17.0          1

现在我想将其拆分,我用口罩将帧中的月份分开。

m1_mask = dft["Freigabe Fauf"].dt.month == 11
m1df1 = dft[m1_mask]

m2_mask = dft["Freigabe Fauf"].dt.month == 06
m2df2 = dft[m2_mask]

现在我有两个不同长度的数据帧。 我想按时间绘制时间。

例如,箱图中第一和第二个df的“ Gesamt”,以查看“ Gesamt”时间如何随时间变化。 在R中,我仅使用列表和默认的boxplot函数,因为R可以处理列表中不同长度的向量。

my_list = [m1df1["Gesamt"],m2df2["Gesamt"]]

这就是我在python中的想象方式,但是它不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:1)

df[['Gesamt']].groupby(df['Freigabe Fauf'].dt.month).boxplot()

输出:

output(1)

或者类似地,使用seaborn

import seaborn as sns

sns.set_style("whitegrid")
df['month'] = df['Freigabe Fauf'].dt.month
sns.boxplot(x="month", y='Gesamt', data=df)

输出:

output(2)

或者如果您只想使用创建的2个数据框:

z = pd.concat([m1df1, m2df2])
z = z[['Gesamt']].groupby(z["Freigabe Fauf"].dt.month).boxplot()

更新

绘制上个月按周划分的箱线图:

df['month'] = df['Freigabe Fauf'].dt.month
z = df[df['month']==df['month'].max()] # data for the last month
z = z[['Gesamt']].groupby(z["Freigabe Fauf"].dt.week).boxplot() # plot weekly boxplots for the last month