Pandas的时间序列操作基础

Pandas的时间序列操作基础

尽管scikit-learn中也有时间序列,但Pandas有一些编译过的更多的功能。在Pandas的这个模块中,我们可以为每条记录加入日期和时间,并可以获取数据帧的记录。通过使用Pandas模块 “时间序列”,我们可以找出一定范围内的日期和时间的数据。让我们来讨论一些主要的目标来介绍Pandas的时间序列分析。
时间序列分析的目的

  • 创建一系列的日期
  • 与数据时间戳一起工作
  • 将字符串数据转换为时间戳
  • 使用时间戳对数据进行切分
  • 对你的时间序列进行重新取样,以获得不同时间段的汇总/汇总统计信息
  • 处理缺失数据的工作

现在,让我们对一些数据做一些实际的分析,以展示pandas时间序列的使用。
代码 #1:

import pandas as pd
from datetime import datetime
import numpy as np
 
range_date = pd.date_range(start ='1/1/2019', end ='1/08/2019',
                                                   freq ='Min')
print(range_date)

输出:

DatetimeIndex(['2019-01-01 00:00:00', '2019-01-01 00:01:00',
               '2019-01-01 00:02:00', '2019-01-01 00:03:00',
               '2019-01-01 00:04:00', '2019-01-01 00:05:00',
               '2019-01-01 00:06:00', '2019-01-01 00:07:00',
               '2019-01-01 00:08:00', '2019-01-01 00:09:00',
               ...
               '2019-01-07 23:51:00', '2019-01-07 23:52:00',
               '2019-01-07 23:53:00', '2019-01-07 23:54:00',
               '2019-01-07 23:55:00', '2019-01-07 23:56:00',
               '2019-01-07 23:57:00', '2019-01-07 23:58:00',
               '2019-01-07 23:59:00', '2019-01-08 00:00:00'],
              dtype='datetime64[ns]', length=10081, freq='T')

解释:
在这段代码中,我们为2019年1月1日至2019年1月8日的日期范围创建了以分钟为基础的时间戳。我们可以通过小时到分钟或秒来改变频率。这个函数将帮助你跟踪每分钟存储的数据记录。正如我们在输出中看到的那样,日期时间戳的长度是10081。记住pandas使用的数据类型是datetime64[ns] 。
代码 #2:

import pandas as pd
from datetime import datetime
import numpy as np
 
range_date = pd.date_range(start ='1/1/2019', end ='1/08/2019',
                                                   freq ='Min')
print(type(range_date[110]))

输出:

<class 'pandas._libs.tslibs.timestamps.Timestamp'>

Explanation:
我们正在检查名为range_date的对象的类型。
代码 #3:

import pandas as pd
from datetime import datetime
import numpy as np
 
range_date = pd.date_range(start ='1/1/2019', end ='1/08/2019',
                                                   freq ='Min')
 
df = pd.DataFrame(range_date, columns =['date'])
df['data'] = np.random.randint(0, 100, size =(len(range_date)))
 
print(df.head(10))

输出:

                  date  data
0 2019-01-01 00:00:00    49
1 2019-01-01 00:01:00    58
2 2019-01-01 00:02:00    48
3 2019-01-01 00:03:00    96
4 2019-01-01 00:04:00    42
5 2019-01-01 00:05:00     8
6 2019-01-01 00:06:00    20
7 2019-01-01 00:07:00    96
8 2019-01-01 00:08:00    48
9 2019-01-01 00:09:00    78

Explanation:
我们首先创建了一个时间序列,然后将这些数据转换成数据框架,并使用随机函数生成随机数据并映射到数据框架上。然后,为了检查结果,我们使用打印函数。
为了进行时间序列的操作,我们需要有一个数据时间索引,这样数据框架就可以对时间戳进行索引。在这里,我们在pandas dataframe中增加了一个新的列。
代码 #4:

import pandas as pd
from datetime import datetime
import numpy as np
 
range_date = pd.date_range(start ='1/1/2019', end ='1/08/2019',
                                                  freq ='Min')
 
df = pd.DataFrame(range_date, columns =['date'])
df['data'] = np.random.randint(0, 100, size =(len(range_date)))
 
string_data = [str(x) for x in range_date]
print(string_data[1:11])

输出:
[‘2019-01-01 00:01:00’, ‘2019-01-01 00:02:00’, ‘2019-01-01 00:03:00’, ‘2019-01-01 00:04:00’, ‘2019-01-01 00:05:00’, ‘2019-01-01 00:06:00’, ‘2019-01-01 00:07:00’, ‘2019-01-01 00:08:00’, ‘2019-01-01 00:09:00’, ‘2019-01-01 00:10:00’]

Explanation:
这段代码只是使用了data_rng中的元素,并将其转换为字符串,由于数据很多,我们将数据切开并打印前十个值的列表string_data。通过使用列表中的for each循环,我们得到了range_date系列中的所有数值。当我们使用date_range时,我们总是要指定开始和结束日期。
示例:

import pandas as pd
from datetime import datetime
import numpy as np
 
range_data = pd.date_range(start ='1/1/2019', end ='1/08/2019',
                                                  freq ='Min')
 
df = pd.DataFrame(range_data, columns =['date'])
df['data'] = np.random.randint(0, 100, size =(len(range_data)))
 
df['datetime'] = pd.to_datetime(df['date'])
df = df.set_index('datetime')
df.drop(['date'], axis = 1, inplace = True)
 
print(df['2019-01-05'][1:11])

输出:

                     data
datetime                 
2019-01-05 00:01:00    99
2019-01-05 00:02:00    21
2019-01-05 00:03:00    29
2019-01-05 00:04:00    98
2019-01-05 00:05:00     0
2019-01-05 00:06:00    72
2019-01-05 00:07:00    69
2019-01-05 00:08:00    53
2019-01-05 00:09:00     3
2019-01-05 00:10:00    37

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程