关键词

python pandas 时间日期的处理实现

以下是“Python Pandas时间日期的处理实现”的完整攻略。

1. 引言

Pandas是Python中重要的数据处理库之一,在数据处理过程中,时间日期的处理非常常见。本攻略将介绍如何使用Pandas处理时间日期数据,包括日期的创建、转换、筛选和分组等。

2. Pandas中的时间日期类型

Pandas中提供了两种时间日期类型:Timestamp和DatetimeIndex。Timestamp表示精确到纳秒级别的单个时间,而DatetimeIndex则是由一组Timestamp组成的时间序列。

2.1 创建Timestamp对象

Timestamp对象可以通过以下方式创建:

import pandas as pd

# 通过字符串创建Timestamp对象
t1 = pd.Timestamp('2022-01-01')
t2 = pd.Timestamp('2022-01-01 12:00:00')

# 通过整数、浮点数或时间戳创建Timestamp对象
t3 = pd.Timestamp(1640995200000000000)
t4 = pd.Timestamp(1640995200)
t5 = pd.Timestamp('2022-01-01 12:00:00').timestamp()

# 查看Timestamp对象
print(t1)  # 2022-01-01 00:00:00
print(t2)  # 2022-01-01 12:00:00
print(t3)  # 2022-01-01 00:00:00
print(t4)  # 2022-01-01 00:00:00
print(t5)  # 1640995200.0

2.2 创建DatetimeIndex对象

DatetimeIndex对象可以通过以下方式创建:

import pandas as pd

# 通过字符串创建DatetimeIndex对象
dti1 = pd.DatetimeIndex(['2022-01-01', '2022-01-02'])
dti2 = pd.DatetimeIndex(['2022-01-01 12:00:00', '2022-01-02 12:00:00'])

# 通过Timestamp对象创建DatetimeIndex对象
dti3 = pd.DatetimeIndex([t1, t2])

# 通过日期范围创建DatetimeIndex对象
dti4 = pd.date_range('2022-01-01', periods=5, freq='D')

# 查看DatetimeIndex对象
print(dti1)
print(dti2)
print(dti3)
print(dti4)

3. 时间日期的转换

Pandas提供了一些方法,可以方便地将时间日期转换为不同的字符串或数字表示。

3.1 将Timestamp对象转换为字符串

可以使用 strftime() 方法将Timestamp对象转换为指定格式的字符串。

import pandas as pd

t = pd.Timestamp('2022-01-01 12:00:00')

# 将Timestamp对象转换为指定格式的字符串
s1 = t.strftime('%Y-%m-%d')  # 2022-01-01
s2 = t.strftime('%Y/%m/%d %H:%M:%S')  # 2022/01/01 12:00:00

print(s1)
print(s2)

3.2 将字符串转换为Timestamp对象

可以使用 pd.to_datetime() 方法将字符串转换为Timestamp对象。

import pandas as pd

# 将字符串转换为Timestamp对象
t1 = pd.to_datetime('2022-01-01')
t2 = pd.to_datetime('2022-01-01 12:00:00')

print(t1)
print(t2)

3.3 将DatetimeIndex对象转换为字符串

可以使用 strftime() 方法将DatetimeIndex对象中的每个Timestamp对象转换为指定格式的字符串。

import pandas as pd

dti = pd.date_range('2022-01-01', periods=3, freq='D')

# 将DatetimeIndex对象中的每个Timestamp对象转换为指定格式的字符串
s = dti.strftime('%Y-%m-%d')

print(s)

3.4 将字符串转换为DatetimeIndex对象

可以使用 pd.to_datetime() 方法将字符串转换为DatetimeIndex对象。

import pandas as pd

# 将字符串转换为DatetimeIndex对象
dti = pd.to_datetime(['2022-01-01', '2022-01-02', '2022-01-03'])

print(dti)

4. 时间日期的筛选

Pandas提供了一些方法,可以方便地按照时间日期进行筛选。

4.1 按照年份筛选

可以使用 dt.year 属性获取Timestamp对象中的年份信息,从而进行筛选。

import pandas as pd

dti = pd.date_range('2022-01-01', periods=3, freq='D')

# 获取年份为2022的数据
mask = dti.year == 2022
result = dti[mask]

print(result)

4.2 按照月份筛选

可以使用 dt.month 属性获取Timestamp对象中的月份信息,从而进行筛选。

import pandas as pd

dti = pd.date_range('2022-01-01', periods=3, freq='D')

# 获取月份为1的数据
mask = dti.month == 1
result = dti[mask]

print(result)

4.3 按照日期筛选

可以使用 dt.day 属性获取Timestamp对象中的日期信息,从而进行筛选。

import pandas as pd

dti = pd.date_range('2022-01-01', periods=3, freq='D')

# 获取日期为2的数据
mask = dti.day == 2
result = dti[mask]

print(result)

4.4 按照时间范围筛选

可以使用 dt.time 属性获取Timestamp对象中的时间信息,从而进行筛选。

import pandas as pd

dti = pd.date_range('2022-01-01 10:00:00', periods=3, freq='H')

# 获取时间范围为11:00:00-12:00:00的数据
mask = (dti.time >= pd.Timestamp('11:00:00').time()) & (dti.time <= pd.Timestamp('12:00:00').time())
result = dti[mask]

print(result)

5. 时间日期的聚合

Pandas提供了一些方法,可以方便地按照时间日期进行聚合。

5.1 按照年份聚合

可以使用 groupby() 方法和 dt.year 属性按照年份进行聚合。

import pandas as pd

dti = pd.date_range('2022-01-01', periods=6, freq='D')
df = pd.DataFrame({'value': [1, 2, 3, 4, 5, 6]}, index=dti)

# 按照年份进行聚合
result = df.groupby(df.index.year).sum()

print(result)

5.2 按照月份聚合

可以使用 groupby() 方法和 dt.month 属性按照月份进行聚合。

import pandas as pd

dti = pd.date_range('2022-01-01', periods=6, freq='D')
df = pd.DataFrame({'value': [1, 2, 3, 4, 5, 6]}, index=dti)

# 按照月份进行聚合
result = df.groupby(df.index.month).sum()

print(result)

6. 示例说明

为了更好地理解Pandas时间日期的处理,以下给出两个示例,分别演示如何创建时间序列、如何按照时间范围获取数据:

6.1 示例1:创建时间序列

import pandas as pd

# 创建2022年1月1日至2022年1月31日每天的DatetimeIndex对象
dti = pd.date_range('2022-01-01', periods=31, freq='D')

# 输出时间序列中的每个日期
for dt in dti:
    print(dt.strftime('%Y-%m-%d'))

输出结果:

2022-01-01
2022-01-02
2022-01-03
2022-01-04
2022-01-05
2022-01-06
2022-01-07
2022-01-08
2022-01-09
2022-01-10
2022-01-11
2022-01-12
2022-01-13
2022-01-14
2022-01-15
2022-01-16
2022-01-17
2022-01-18
2022-01-19
2022-01-20
2022-01-21
2022-01-22
2022-01-23
2022-01-24
2022-01-25
2022-01-26
2022-01-27
2022-01-28
2022-01-29
2022-01-30
2022-01-31

6.2 示例2:按照时间范围获取数据

import pandas as pd

# 创建时间序列
dti = pd.date_range('2022-01-01', periods=24, freq='H')
df = pd.DataFrame({'value': range(24)}, index=dti)

# 获取时间范围为2022年1月1日13:00:00至2022年1月1日16:00:00的数据
mask = (df.index >= pd.Timestamp('2022-01-01 13:00:00')) & (df.index <= pd.Timestamp('2022-01-01 16:00:00'))
result = df[mask]

print(result)

输出结果:

                     value
2022-01-01 13:00:00     13
2022-01-01 14:00:00     14
2022-01-01 15:00:00     15
2022-01-01 16:00:00     16

7. 总结

本攻略介绍了如何使用Pandas处理时间日期数据,包括日期的创建、转换、筛选和分组等。希望这些内容能够帮助读者更好地处理时间日期数据。

本文链接:http://task.lmcjl.com/news/14452.html

展开阅读全文