Add*_*dds 6 python numpy time-series data-analysis pandas
我在python中有以下时间序列表:
list = [(datetime.datetime(2008, 7, 15, 15, 0), 0.134),
(datetime.datetime(2008, 7, 15, 16, 0), 0.0),
(datetime.datetime(2008, 7, 15, 17, 0), 0.0),
(datetime.datetime(2008, 7, 15, 18, 0), 0.0),
(datetime.datetime(2008, 7, 15, 19, 0), 0.0),
(datetime.datetime(2008, 7, 15, 20, 0), 0.0),
(datetime.datetime(2008, 7, 15, 21, 0), 0.0),
(datetime.datetime(2008, 7, 15, 22, 0), 0.0),
(datetime.datetime(2008, 7, 15, 23, 0), 0.0),
(datetime.datetime(2008, 7, 16, 0, 0), 0.0)]
Run Code Online (Sandbox Code Playgroud)
此列表是一个键值对,其中键是datetime,value是以逗号分隔后的值.我想从键(日期时间)和值(十进制值)创建熊猫系列.任何人都可以帮我把上面的时间序列值列表分成两个列表(list1和list2),这样我可以从以下代码中创建pandas Series对象以进行进一步分析?
import pandas as pd
ts = pd.Series(list1, list2)
Run Code Online (Sandbox Code Playgroud)
In [34]: pd.Series(*zip(*((b,a) for a,b in data)))
Out[34]:
2008-07-15 15:00:00 0.134
2008-07-15 16:00:00 0.000
2008-07-15 17:00:00 0.000
2008-07-15 18:00:00 0.000
2008-07-15 19:00:00 0.000
2008-07-15 20:00:00 0.000
2008-07-15 21:00:00 0.000
2008-07-15 22:00:00 0.000
2008-07-15 23:00:00 0.000
2008-07-16 00:00:00 0.000
dtype: float64
Run Code Online (Sandbox Code Playgroud)
或者,放弃写俏皮话的疯狂欲望:
dates, vals = zip(*data)
s = pd.Series(vals, index=dates)
Run Code Online (Sandbox Code Playgroud)
如果数据非常长,您可以使用 itertools.izip 避免创建中间元组:
import itertools as IT
dates, vals = IT.izip(*data)
s = pd.Series(vals, index=dates)
Run Code Online (Sandbox Code Playgroud)