鍍金池/ 問答/Python  HTML/ Python3 按照時間統(tǒng)計 每年、每月、每天。高手勿噴 虛心求教 不勝感激

Python3 按照時間統(tǒng)計 每年、每月、每天。高手勿噴 虛心求教 不勝感激

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

    # 獲取當月第一天的星期和當月的總天數(shù)
    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)
)

初期自學,上面是做了個全年月份統(tǒng)計(請大神指點優(yōu)化代碼)

還想做一些每月內(nèi)所有天數(shù)每天內(nèi)所有小時 可以以后做成統(tǒng)計樹狀圖或折線圖,不知道怎么入手

高手勿噴 虛心求教 不勝感激

回答
編輯回答
陌上花

折騰這么麻煩干什么呢,直接一張大寬表扔關(guān)系數(shù)據(jù)庫就好了。想要什么維度直接一條 sql 的事。

2017年12月14日 10:56
編輯回答
離人歸
# !/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)

多么痛的領(lǐng)悟

2018年7月21日 03:10