2017-04-22 69 views
2

据帧如下:箱图熊猫数据

 ID1    ID2 
0 00:00:01.002 00:00:01.002 
1 00:00:01.001 00:00:01.006 
2 00:00:01.004 00:00:01.011 
3 00:00:00.998 00:00:01.012 
4  NaT   00:00:01.000 
       ... 
20  NaT   00:00:00.998 

我所要做的是为每个ID的箱线图。根据我提供的数据集,可能有或没有多个ID。现在我正试图为2个数据集解决这个问题。如果可能的话,我希望有一个解决方案将所有数据放在同一个boxplot上,然后再将另一个数据显示在每个ID的boxplot上。

我是很新的大熊猫(努力学习吧...),并在这多久采取弄清楚我只是感到沮丧...这里是我的代码...

deltaTime = pd.DataFrame() #Create blank df 
for x in range(0, len(totIDs)): 
    ID = IDList[x] 
    df = pd.DataFrame(data[ID]).T 
    deltaT[ID] = pd.to_datetime(df[TIME_COL]).diff() 
deltaT.boxplot() 

很简单,似乎无法得到它做我想绘制每个ID的盒子图。我不应该说数据是由需要几个复杂的文件,并将其分类成是由标识索引的数据字典自主开发的文件阅读器给我。

我正在大熊猫版本0.14.0和Python版本2.7.7

+1

的[如何绘制的数据帧的一列的箱形图在matplotlib两组]可能的复制(http://stackoverflow.com/questions/43209795/how-to-plot-a-box-plot -of-A-列的-A-DATA-框架中有两个组,在-matplotlib) – manelfp

回答

1

我不知道这是如何工作的0.14.0版本,因为最后是0.19.2 - 我建议升级如果可能的话:

#sample data 
np.random.seed(180) 
dates = pd.date_range('2017-01-01 10:11:20', periods=10, freq='T') 
cols = ['ID1','ID2'] 
df = pd.DataFrame(np.random.choice(dates, size=(10,2)), columns=cols) 
print (df) 
        ID1     ID2 
0 2017-01-01 10:12:20 2017-01-01 10:17:20 
1 2017-01-01 10:16:20 2017-01-01 10:20:20 
2 2017-01-01 10:18:20 2017-01-01 10:17:20 
3 2017-01-01 10:12:20 2017-01-01 10:16:20 
4 2017-01-01 10:14:20 2017-01-01 10:18:20 
5 2017-01-01 10:18:20 2017-01-01 10:19:20 
6 2017-01-01 10:17:20 2017-01-01 10:12:20 
7 2017-01-01 10:13:20 2017-01-01 10:17:20 
8 2017-01-01 10:16:20 2017-01-01 10:11:20 
9 2017-01-01 10:13:20 2017-01-01 10:19:20 

呼叫DataFrame.diff,然后转换到timedeltastotal_seconds

df = df.diff().apply(lambda x: x.dt.total_seconds()) 
print(df) 
    ID1 ID2 
0 NaN NaN 
1 240.0 180.0 
2 120.0 -180.0 
3 -360.0 -60.0 
4 120.0 120.0 
5 240.0 60.0 
6 -60.0 -420.0 
7 -240.0 300.0 
8 180.0 -360.0 
9 -180.0 480.0 

末使用DataFrame.plot.box

df.plot.box() 

graph

您还可以检查docs

+0

尝试在匆忙,因为我不得不离开,但我做这行的时候出现以下错误:pd.to_datetime( 。DF [TIME_COL])的diff()应用(拉姆达×:x.dt.total_seconds())我有:AttributeError的: 'numpy.timedelta64' 对象没有属性 'dt的'。 。 – Sharki

+0

你有旧版本的熊猫,所以我认为这是越野车:(请升级 – jezrael

+0

我不能升级:(...这是一个工作,我们正在运行上不能更改,恕不一个小小的奇迹系统......花了上次1年只是为了更新所有软件... – Sharki