Pandas时间数据处理详细教程

  • Post category:Python

Pandas时间数据处理详细教程

什么是时间数据

时间数据是一种非常常用的数据类型,涉及到时间序列的分析、时间戳数据的分析和时区问题等。Pandas提供了非常强大的时间序列处理功能,可以轻松处理时间相关的数据。

时间数据的创建

Pandas中有三种主要的时间数据创建方法:pd.to_datetime()pd.date_range()pd.Timestamp()

pd.to_datetime()

将字符串或时间戳转化为时间数据。

import pandas as pd

# 将字符串转化为时间数据
time_str = '2019-03-20 12:00:00'
time_data = pd.to_datetime(time_str)
print(time_data)

# 将时间戳转化为时间数据
time_stamp = 1553068800
time_data = pd.to_datetime(time_stamp, unit='s')
print(time_data)

输出:

2019-03-20 12:00:00
2019-03-20 00:00:00

pd.date_range()

生成固定频率的时间数据序列。

import pandas as pd

# 生成一个MS频率为月初的时间序列
time_data = pd.date_range(start='20190101', end='20191231', freq='MS')
print(time_data)

输出:

DatetimeIndex(['2019-01-01', '2019-02-01', '2019-03-01', '2019-04-01',
               '2019-05-01', '2019-06-01', '2019-07-01', '2019-08-01',
               '2019-09-01', '2019-10-01', '2019-11-01', '2019-12-01'],
              dtype='datetime64[ns]', freq='MS')

pd.Timestamp()

用于创建单个时间数据。

import pandas as pd

# 使用字符串创建时间数据
time_data = pd.Timestamp('2019-01-01 12:00:00')
print(time_data)

# 使用时间戳创建时间数据
time_data = pd.Timestamp(1553068800, unit='s')
print(time_data)

输出:

2019-01-01 12:00:00
2019-03-20 00:00:00

时间数据操作

时间数据可以进行各种时间数据的操作。

时间数据的切片

import pandas as pd

time_data = pd.date_range(start='20190101', end='20191231', freq='D')
print(time_data[0:10])

输出:

DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
               '2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
               '2019-01-09', '2019-01-10'],
              dtype='datetime64[ns]', freq='D')

时间数据的判断

import pandas as pd

# 判断是否在日期范围内
time_data = pd.date_range(start='2019-03-20 00:00:00', end='2019-03-25 00:00:00', freq='D')
print(pd.Timestamp('2019-03-23 00:00:00') in time_data)

# 时间数据运算
time_data = pd.Timestamp('2019-03-20 00:00:00')
print(time_data + pd.Timedelta(days=1))

输出:

True
2019-03-21 00:00:00

示例一

下面是一个示例,通过读取CSV数据来创建时间数据。

import pandas as pd

df = pd.read_csv('example.csv', parse_dates=['date'])
print(df.dtypes)

输出:

date       datetime64[ns]
value             float64
dtype: object

示例二

下面是一个示例,通过时间数据进行排序。

import pandas as pd

df = pd.read_csv('example.csv', parse_dates=['date'])
df = df.sort_values(by='date')
print(df.head())

输出:

                  date     value
0  2019-01-01 00:00:00  0.558183
1  2019-01-02 00:00:00  0.953411
2  2019-01-03 00:00:00  0.506491
3  2019-01-04 00:00:00  0.582835
4  2019-01-05 00:00:00  0.648820