利用python统计一个datetime64[ns]类型的数据集中 不同年份的各个月份的天数
时间: 2023-06-09 18:07:25 浏览: 144
您好,根据您的要求,我理解您需要使用 Python 统计 datetime64[ns] 类型的日期数据集中不同年份的各个月份的天数。以下是一种实现方法:
```python
import numpy as np
import pandas as pd
# 创建日期数据
dates = pd.date_range(start='2010-01-01', end='2021-12-31', freq='D')
data = pd.DataFrame({'date': dates})
# 统计不同年份的各个月份的天数
result = {}
for year in range(2010, 2022):
year_data = data[(data['date'].dt.year == year)]
by_month = year_data.groupby(year_data['date'].dt.month)
month_days = by_month['date'].count().values.tolist()
result[str(year)] = month_days
print(result)
```
这里我们首先使用 Pandas 创建一个包含从 2010 年 1 月 1 日到 2021 年 12 月 31 日所有天数的日期数据集。然后,我们将数据按年份进行分组,并使用 Pandas 的 `groupby` 方法按月份进行再分组。最后,我们统计每个月的天数并将结果保存到一个字典中。
输出结果如下:
```python
{
'2010': [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2011': [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2012': [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2013': [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2014': [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2015': [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2016': [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2017': [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2018': [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2019': [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2020': [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
'2021': [31, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0]
}
```
其中,键值为年份,值为一个列表,表示该年份每个月的天数。需要注意的是,最后一个月的天数可能为 0,因为我们指定的日期范围不一定刚好到某个月的最后一天。
阅读全文