Python3 按照时间统计 每年、每月、每天。高手勿喷 虚心求教 不胜感激

def get_firstday_lastday(year=None, month=None):
    """
    :param year: 年份,默认是本年,可传int或str类型
    :param month: 月份,默认是本月,可传int或str类型
    :return: firstDay: 当月的第一天,datetime.date类型
              lastDay: 当月的最后一天,datetime.date类型
    """
    if year:
        year = int(year)
    else:
        year = datetime.date.today().year

    if month:
        month = int(month)
    else:
        month = datetime.date.today().month

    # 获取当月第一天的星期和当月的总天数
    firstDayWeekDay, monthRange = calendar.monthrange(year, month)

    # 获取当月的第一天
    firstDay = datetime.date(year=year, month=month, day=1)
    lastDay = datetime.date(year=year, month=month, day=monthRange)

    return firstDay, lastDay
# !/usr/bin/python3
# encoding=utf-8


import user_list
import function
import datetime


reg_u = user_list.get_registereduser()
month_list, month1, month2, month3, month4, month5, month6, \
    month7, month8, month9, month10, month11, month12 = \
    [], [], [], [], [], [], [], [], [], [], [], [], []

for i in range(1, 13):
    date = function.get_firstday_lastday(2018, i)
    for d in date:
        day = datetime.datetime.strptime(str(d), '%Y-%m-%d')
        month_list.append(day)

for u in reg_u:
    if month_list[0] <= u['regDate'] < month_list[2]:
        month1.append(u)
    elif month_list[2] <= u['regDate'] < month_list[4]:
        month2.append(u)
    elif month_list[4] <= u['regDate'] < month_list[6]:
        month3.append(u)
    elif month_list[6] <= u['regDate'] < month_list[8]:
        month4.append(u)
    elif month_list[8] <= u['regDate'] < month_list[10]:
        month5.append(u)
    elif month_list[10] <= u['regDate'] < month_list[12]:
        month6.append(u)
    elif month_list[12] <= u['regDate'] < month_list[14]:
        month7.append(u)
    elif month_list[14] <= u['regDate'] < month_list[16]:
        month8.append(u)
    elif month_list[16] <= u['regDate'] < month_list[18]:
        month9.append(u)
    elif month_list[18] <= u['regDate'] < month_list[20]:
        month10.append(u)
    elif month_list[20] <= u['regDate'] < month_list[22]:
        month11.append(u)
    elif month_list[22] <= u['regDate'] < month_list[23]:
        month12.append(u)

print(
    len(month1), len(month2), len(month3), len(month4), len(month5), len(month6),
    len(month7), len(month8), len(month9), len(month10), len(month11), len(month12)
)

初期自学,上面是做了个全年月份统计(请大神指点优化代码)

还想做一些每月内所有天数每天内所有小时 可以以后做成统计树状图或折线图,不知道怎么入手

高手勿喷 虚心求教 不胜感激

阅读 3.1k
2 个回答
# !/usr/bin/python3
# encoding=utf-8

import user_list
import pandas as pd

month_list = []
day_list = []
hour_list = []

for u in reg_u:
    month_list.append(u['regDate'].month)
    day_list.append(u['regDate'].day)

month = pd.Series(month_list)
month_num = month.value_counts()
day = pd.Series(day_list)
day_num = day.value_counts()


print(month_num)
print(day_num)

多么痛的领悟

折腾这么麻烦干什么呢,直接一张大宽表扔关系数据库就好了。想要什么维度直接一条 sql 的事。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题