利用python统计一个datetime类型的数据集中 不同年份的各个月份的天数
时间: 2023-06-09 18:07:25 浏览: 224
可以使用Python中的datetime和collections库来实现该功能。具体步骤如下:
1. 首先将数据集中的每个日期转换为datetime类型。假设数据集存储在一个列表中,可以使用如下代码将其转换为datetime类型:
```python
from datetime import datetime
dates = ['2020-01-01', '2020-01-10', '2021-02-15', '2022-03-20']
date_objects = [datetime.strptime(date, '%Y-%m-%d') for date in dates]
```
2. 然后可以使用collections库中的defaultdict来计算每个年份的各个月份的天数。具体来说,可以创建一个defaultdict,键为年份,值为另一个defaultdict,键为月份,值为天数。然后可以遍历datetime对象列表,对于每个datetime对象,取出其年份和月份,并将对应的天数加1。代码如下:
```python
from collections import defaultdict
day_counts = defaultdict(lambda: defaultdict(int))
for date in date_objects:
year = date.year
month = date.month
day_counts[year][month] += 1
```
3. 最后可以输出结果,格式为“年份-月份: 天数”。代码如下:
```python
for year, months in sorted(day_counts.items()):
print(year)
for month, count in sorted(months.items()):
print(f'{year}-{month}: {count}')
```
完整代码如下:
```python
from datetime import datetime
from collections import defaultdict
dates = ['2020-01-01', '2020-01-10', '2021-02-15', '2022-03-20']
date_objects = [datetime.strptime(date, '%Y-%m-%d') for date in dates]
day_counts = defaultdict(lambda: defaultdict(int))
for date in date_objects:
year = date.year
month = date.month
day_counts[year][month] += 1
for year, months in sorted(day_counts.items()):
print(year)
for month, count in sorted(months.items()):
print(f'{year}-{month}: {count}')
```
输出结果为:
```
2020
2020-1: 2
2021
2021-2: 1
2022
2022-3: 1
```
阅读全文