创建和更改为Datetime、DatetimeIndex,时间序列

7 篇文章 0 订阅
3 篇文章 0 订阅

创建DatetimeIndex

1. pd.date_range(start= '2018-05-01', end= '2018-12-31')
2. pd.date_range(start='2018-05-01' ,periods = 100)# 产生100个Datetime
3. pd.date_range(start='2018-05-01' ,periods = 100,freq = 'W')#每周一间隔
freq =‘H’每小时为间隔
freq = ‘5H’每5小时为间隔
freq = ‘D’每天为间隔
freq = ‘W’每周为分隔
freq =‘W-MON’每周为分隔,周一为间隔的起点

数据类型转换为时间序列类型

  1. 设置列为DataFrame类型
* df['col1'] = pd.to_datetime(df['col1'],format = '%Y-%m-%d')
* #format 设置显示日期精度、格式
  1. 设置索引为DatetimeIndex类型
# 读取文件时,将date列读取为index,此时索引类型为obj
df = pd.read_csv('1.csv',index_col= 'date')

# 将索引类型更改为DatetimeIndex
df.index = pd.DatetimeIndex(df.index)# 可直接多索引进行操作

注意index的值为日期,所以才能转换为Datetime

  1. 对时间序列的切片
df = pd.DataFrame(np.random.randn(100,4),index  = pd.date_range('20181031',periods=100,freq='W'))
df.loc['2018']
df.loc['2018-11']

0 1 2 3
2018-11-04 1.512598 0.049858 -0.958455 0.714407
2018-11-11 -0.906760 1.118072 -0.705264 0.323554
2018-11-18 0.789005 -1.583082 0.463199 -1.340168
2018-11-25 0.532485 -1.433163 0.521303 1.221758

Ser = pd.Series(np.random.randn(1000),pd.date_range('20181031',periods=1000))
Ser['2018']
Ser['20181111':'20181116']

2018-11-11 0.360134
2018-11-12 1.886571
2018-11-13 -0.609659
2018-11-14 0.703976
2018-11-15 -1.182582
2018-11-16 -0.080813
Freq: D, dtype: float64

  1. 换算精确到年、月、日——单位换算
df.col_1.values.astype('datetime64[M]')
#假设换算前列单位为ns,现在则为month

|datetime64[Y]|年份|
|datetime64[M]|月份|
|datetime64[D]|天|
为精确到年月日格式

5. 其他
```python
np.datetime64('today') #今天,单位天

* /np.timedelta64[1,'D']
	1. 消除单位'days'
	2. datetime列除以
	3. eg,假设df.col_1为时间序列,精确度为day:
df.col_1_new = df.col_1/np.timedelta64[1,'D']
df.col_1_new的单位day就消除了,可以看作只是一列数字了
  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值