我通常使用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中的想象方式,但是它不起作用。我该怎么办?
答案 0 :(得分:1)
df[['Gesamt']].groupby(df['Freigabe Fauf'].dt.month).boxplot()
输出:
或者类似地,使用seaborn
:
import seaborn as sns
sns.set_style("whitegrid")
df['month'] = df['Freigabe Fauf'].dt.month
sns.boxplot(x="month", y='Gesamt', data=df)
输出:
或者如果您只想使用创建的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