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