[英]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()
df.plot()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.