代码 | 描述 |
---|---|
now = datetime.now() | 获取当前时间戳 |
date = datetime(2019, 4, 15) | 生成时间戳 |
index = pd.date_range(‘20190202 14:22:22’, periods=10, normalize=False, freq=‘M’) | 生成时间序列 |
p = pd.period_range(‘2019-01’, periods=10, freq=‘D’) | 时间段序列 |
p = p.asfreq(‘M’, how=‘start’) | 修改频率 |
s1 = s.to_period(freq=‘M’) | 修改成时间段序列 |
s3 = s1.to_timestamp(how=‘end’) | 修改成时间戳序列 |
ts = ts.resample(‘10min’, label=‘right’).sum() | 重采样 |
ts = ts.resample(‘15min’).ohlc() | 重采样 |
df1 = df.resample(‘D’).ffill(3) | 向上最多填满三个空白 |
df = pd.read_csv(path, index_col=‘Date’, parse_dates=True) | 读取文件时解析出时间戳 |
df[‘price’].resample(‘W-FRI’).phlc() | 转换成周线数据 |
import pandas as pd
import numpy as np
from datetime import datetime
from datetime import timedelta
now = datetime.now()
print(now, type(now), '\n', now.year, type(now),'\n', now.month, type(now.month),'\n', now.day, type(now.day))
print(now.strftime('%y/%m/%d %H:%M:%S'), type(now.strftime('%y/%m/%d %H:%M:%S'))) # 将时间戳修改为str,并格式化
print(datetime.strptime('20/03/06 13:56:51', '%y/%m/%d %H:%M:%S')) # 将字符串修改为时间戳
date1 = datetime(2019, 4, 15)
date2 = datetime(2017, 4, 16)
date = date1 - date2
print(date)
print(date.days, type(date.days), '\n', date.total_seconds(), type(date.total_seconds()), '\n') # 得到具体的int和float
print(date2 + date, '\n', date1) # 时间戳的运算
print(date + timedelta(4.5)) # 加上4.5天
s = pd.Series(np.random.randn(2), index=[date1, date2])
print(s)
print(s.index)
print(s.index[0])
datetime_index1 = pd.date_range('20190202', periods=10) # 生成时间序列方法1
datetime_index2 = pd.date_range('20190202', '20190302') # 生成时间序列方法2
datetime_index3 = pd.date_range('20190202 14:22:22', periods=10, normalize=False) # periods频率默认为日,参数3为是否显示时分秒
datetime_index4 = pd.date_range(start='20190202', periods=10, freq='M') # 以月份为单位,结果会是每个月的最后一天
datetime_index5 = pd.date_range(start='20190202', periods=10, freq='BM') # 以月份为单位,结果会是每个月的最后一个工作日
datetime_index6 = pd.date_range('20190202', periods=10, freq='4H') # 频率为4小时
print(datetime_index1, '\n', datetime_index2, '\n', datetime_index3, '\n', datetime_index4, '\n', datetime_index5, '\n', datetime_index6)
p1 = pd.Period(2019) # 时间戳代表一个时间点,Period代表一个时期,默认单位为年
p2 = pd.Period(2019, freq='M') # 频率为月
p3 = p2 + 3
p4 = pd.period_range('2019-01', periods=10, freq='D') # 创建一个时期的序列方法1
p5 = pd.period_range('2019-01', '2019-12', freq='D') # 创建一个时期的序列方法2
p6 = pd.period_range('2019Q1', periods=10, freq='Q') # 季度
p7 = p6.asfreq('M', how='start') # 修改频率
p8 = p7.asfreq('A') # 修改频率为财年
print(p1, '\n', p2, '\n', p3, '\n', p4, '\n', p5, '\n', p6, '\n', p7, '\n', p8)
s = pd.Series(np.random.randn(5), index=pd.date_range('2019-04-28', periods=5, freq='D'))
print(s)
s1 = s.to_period(freq='M') # 时间戳的时间序列转化为时期的时间序列,频率也可以转化
print(s1, s1.index)
s2 = s1.groupby(level=0).max() # level=0根据列来分组,max()是获得每个分组的最大值
print(s2)
s3 = s1.to_timestamp(how='end') # 按照最后一天取时间戳
print(s3)
ts = pd.Series(np.random.randint(0, 40, 180), index=pd.date_range('2019-04-15 09:30', periods=180, freq='T'))
print(ts)
ts = ts.resample('5min').sum() # 5分钟为单位重采样,以求和的形式,以开始时间
print(ts)
ts = ts.resample('10min', label='right').sum() # 以结尾时间
print(ts)
ts = ts.resample('15min').ohlc() # 以开高收低的方式
print(ts)
ts = pd.Series(np.random.randint(0, 50, 100), index=pd.date_range('2019-04-15', periods=100, freq='D'))
print(ts)
ts1 = ts.groupby(lambda x: x.month).sum()
ts1 = ts.groupby(ts.index.to_period('M')).sum() # ? todo 搞清楚groupby啥情况
print(ts1)
ts2 = ts.resample('M').sum()
print(ts2)
df = pd.DataFrame(np.random.randint(1, 50, 2), index=pd.date_range('2019-04-15', periods=2, freq='W-FRI'))
print(df, '111111')
df1 = df.resample('D').ffill(3) # 往前取值装填,最多填三个
print(df1)
# df = pd.read_csv(path, index_col='Date', parse_dates=True) # parse_dates=True ,在读取过程中会尽力解析成为时间戳
# df['price'].resample('W-FRI').phlc() # 转换成周线数据
加粗样式