我在CSV文件中有一个30秒间隔的时间序列数据,格式如下:
20120105, 080000,   1
20120105, 080030,   2
20120105, 080100,   3
20120105, 080130,   4
20120105, 080200,   5
如何使用这两种不同的索引方案将其读入pandas数据框:
1,将日期和时间合并为一个日期时间索引
2,使用date作为主索引,使用time作为multiindex数据帧中的辅助索引
这两种方案的利弊是什么?一般比另一个更优选吗?在我的情况下,我想看看时间分析,但我不完全确定哪个方案对我的目的更方便.提前致谢.
将日期和时间合并为单个日期时间索引
df = pd.read_csv(io.BytesIO(text), parse_dates = [[0,1]], header = None, index_col = 0)
print(df)
#                      2
# 0_1                   
# 2012-01-05 08:00:00  1
# 2012-01-05 08:00:30  2
# 2012-01-05 08:01:00  3
# 2012-01-05 08:01:30  4
# 2012-01-05 08:02:00  5
使用date作为主索引,将time作为multiindex数据帧中的二级索引
df2 = pd.read_csv(io.BytesIO(text), parse_dates = True, header = None, index_col = [0,1])
print(df2)
#                   2
# 0          1       
# 2012-01-05 80000  1
#            80030  2
#            80100  3
#            80130  4
#            80200  5
我天真的倾向是偏好多指数的单一指数.
但是,我对Pandas不是很有经验,在进行时间分析时使用多索引可能会有一些优势.
我会尝试两种方式编写一些典型的计算方法,然后根据编码的简易性,可读性和性能来看看哪一个我更喜欢.
这是我的设置,以产生上述结果.
import io
import pandas as pd
text = '''\
20120105, 080000,   1
20120105, 080030,   2
20120105, 080100,   3
20120105, 080130,   4
20120105, 080200,   5'''
你当然可以使用
pd.read_csv(filename, ...)
代替
pd.read_csv(io.BytesIO(text), ...)