简体   繁体   English

如何绘制在索引,时间序列上带有标签的熊猫df作为列表存储在一列中

[英]How to plot a pandas df with labels on index, time series as list stored in one column

I have a dataframe of the following form: 我有以下形式的数据框:

         ts
label

A        [stamp1, stamp2, ...]

B        [stamp1, stamp2, ...]

C

D

I want to plot one time series as line for each label. 我想绘制一个时间序列作为每个标签的线。 How could I do it easily in pandas? 如何在熊猫中轻松做到这一点?

You can try: 你可以试试:

import pandas as pd
import numpy as np


df = pd.DataFrame({"ts":  pd.Series([[pd.Timestamp('2014-04-08 00:00:00'), pd.Timestamp('2014-04-09 00:00:00'), pd.Timestamp('2014-04-10 00:00:00')], 
                                     [pd.Timestamp('2014-05-08 00:00:00'), pd.Timestamp('2014-05-09 00:00:00'), pd.Timestamp('2014-05-10 00:00:00')],  
                                     [pd.Timestamp('2014-06-08 00:00:00'), pd.Timestamp('2014-06-09 00:00:00'), pd.Timestamp('2014-06-10 00:00:00')], 
                                     [pd.Timestamp('2014-07-08 00:00:00'), pd.Timestamp('2014-07-09 00:00:00'), pd.Timestamp('2014-07-10 00:00:00')]],
                                     index=[ 'A', 'B', 'C', 'D'])})

print df                    

                                                  ts
A  [2014-04-08 00:00:00, 2014-04-09 00:00:00, 201...
B  [2014-05-08 00:00:00, 2014-05-09 00:00:00, 201...
C  [2014-06-08 00:00:00, 2014-06-09 00:00:00, 201...
D  [2014-07-08 00:00:00, 2014-07-09 00:00:00, 201...

#convert lists to columns
df = pd.DataFrame([ x for x in df['ts']], index=df.index)
print df

           0          1          2
A 2014-04-08 2014-04-09 2014-04-10
B 2014-05-08 2014-05-09 2014-05-10
C 2014-06-08 2014-06-09 2014-06-10
D 2014-07-08 2014-07-09 2014-07-10
#cast datetime to integer
df = df.astype(np.int64)
print df 

                     0                    1                    2
A  1396915200000000000  1397001600000000000  1397088000000000000
B  1399507200000000000  1399593600000000000  1399680000000000000
C  1402185600000000000  1402272000000000000  1402358400000000000
D  1404777600000000000  1404864000000000000  1404950400000000000   

#transpose and plot df
df.T.plot()

图片1

df.plot()

image2

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM