当前位置:

首页 > 编程开发 > 用Python设计你的核酸检测提醒日历

用Python设计你的核酸检测提醒日历

我的坐标是深圳,2022年以来,大部分时候要求24小时,少部分时候要求48小时,更少的时候要求72小时,没有更长的情况。本文根据我的核酸检测记录,制作成日历,将核酸检测记录可视化到日历中。录入数据核酸检测记录能查到的最早时间范围是一个月,以前的检测记录没有提前保存,所以先用8月份的数据制作日历。查询8月份的检测记录,录入到代码中。#coding=utf-8fromdatetimeimportdatetime#核酸检测数据,1表示当天做了核酸,0表示当天未做核酸my_nucleic=

本文目录

    用Python设计你的核酸检测提醒日历

    我的坐标是深圳,2022年以来,大部分时候要求24小时,少部分时候要求48小时,更少的时候要求72小时,没有更长的情况。

    本文根据我的核酸检测记录,制作成日历,将核酸检测记录可视化到日历中。

    录入数据

    核酸检测记录能查到的最早时间范围是一个月,以前的检测记录没有提前保存,所以先用8月份的数据制作日历。

    查询8月份的检测记录,录入到代码中。

    # coding=utf-8
    from datetime import datetime
    # 核酸检测数据,1表示当天做了核酸,0表示当天未做核酸
    my_nucleic = {
     'date': [datetime.strftime(datetime(2022, 8, i+1), '%Y-%m-%d') for i in range(31)],
     'nucleic': [1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    }

    如果当天做了核酸,用1表示,如果当天未做核酸,用0表示。

    8月的日期使用Python标准库datetime生成。

    制作日历

    本文使用Python库openpyxl在excel表格中生成日历。

    1.使用openpyxl创建表格

    import openpyxl
    # 创建一个workbook对象,而且会在workbook中至少创建一个表worksheet
    wb = openpyxl.Workbook()
    # 获取当前活跃的worksheet,默认就是第一个worksheet
    ws = wb.active

    openpyxl是Python中用于读写excel文件的库,pip install openpyxl安装即可使用。

    2.定义表格初始化和单元格设置的函数

    from openpyxl.styles import PatternFill, Font, Alignment, Border, Side
    def init_sheet(ws):
     for r in range(100):
     for c in range(100):
     ws.cell(row=r+1, column=c+1).fill = PatternFill('solid', fgColor='000000')
    def set_cell_style(ws, r, c, color):
     ws.cell(row=r, column=c).fill = PatternFill('solid', fgColor=color)
     ws.cell(row=r, column=c).font = Font(name="微软雅黑", size=14, bold=True)
     ws.cell(row=r, column=c).alignment = Alignment(horizontal='right', vertical='center')
     side = Side(style="medium", color="004B3C")
     ws.cell(row=r, column=c).border = Border(top=side, bottom=side, left=side, right=side)

    定义一个将表格颜色填充成白色的函数,对表格初始化处理,将背景设置成纯白,日历看起来更美观。

    定义一个用于处理单元格格式的函数,后面直接调用函数给单元格设置格式,方便重复使用。

    3.实现日历

    import calendar
    # 将表格填充成白色
    init_sheet(ws)
    # 设置年月单元格的边框
    side = Side(style="medium", color="004B3C")
    for col in range(7):
     ws.cell(row=1, column=col+1).border = Border(top=side, bottom=side, left=side, right=side)
    # 合并年月单元格
    ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=7)
    # 写入内容和设置格式
    ws.cell(row=1, column=1).value = '2022年8月'
    set_cell_style(ws, r=1, c=1, color='418CFA')
    # 写入星期一至星期日,并设置格式
    title_data = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    for col in range(7):
     ws.cell(row=2, column=col+1).value = title_data[col]
     set_cell_style(ws, r=2, c=col+1, color='418CFA')
    # 获取一个月的天数和第一天是星期几
    monthday = calendar.monthrange(2022, 8)
    # 设置日历的日期
    col, row = monthday[0], 3
    for i in range(len(my_nucleic['date'])):
     if col < 7:
     ws.cell(row=row, column=col + 1).value = i+1
     col += 1
     else:
     col = 0
     row += 1
     ws.cell(row=row, column=col + 1).value = i+1
     col += 1
     # 设置单元格格式
     set_cell_style(ws, r=row, c=col, color='000000')
     # 根据核酸结果填充颜色
     if my_nucleic['nucleic'][i] == 1:
     ws.cell(row=row, column=col).fill = PatternFill('solid', fgColor='009B3C')
    # 设置行高
    for i in range(1, row+1):
     ws.row_dimensions[i].height = 30
    # 保存表格
    wb.save(filename='show_august_nucleic.xlsx')
    wb.close()

    日历效果:

    用Python设计你的核酸检测提醒日历

    可以看到,8月份我只有4天没有做核酸,大部分时间都是保持24小时。

    代码实现介绍:

    •  先合并首行的前7列单元格,写入年月,然后在第二行从左到右写入星期一到星期日,并设置格式。
    •  使用Python的日历库calendar返回当前月第一天是星期几,然后确定日历的1号的起始位置。
    •  从1号开始,依次在excel中写入日期,当列到达星期日时,换行并回到星期一的列。
    •  根据当天是否做了核酸,给单元格填充背景颜色。本文中如果当天做了核酸,则日期的背景设置为绿色(24小时核酸码的颜色),如果未做核酸,则日期的背景设置为白色。
    •  最后将结果保存到excel文件中,打开excel文件即可看到制作的日历。

    制作一年的日历

    制作了一个月的日历后,继续扩展做一年的日历,先看一下效果:

    用Python设计你的核酸检测提醒日历

    用Python设计你的核酸检测提醒日历

    实现方式介绍:

    •  数据补充,由于只能查到一个月的核酸记录,所以本文除2022年8月外,其他月份的数据用随机数生成。
    •  对制作一个月日历的代码进行封装,传入年和月,就可以生成任意一个月的日历。
    •  在excel文件中,自己设计一排展示几个月,本文一排展示3个月。并计算每个月日历的起始单元格位置。
    •  最后传入年份,依次将一年12个月的日历制作出来,展示在一个页面上。只要有数据,可以对任意一年的日历进行可视化。(代码较长,可在文末获取完整代码)

    按年的另一种展示方式:

    from pyecharts import options as opts
    from pyecharts.charts import Calendar
    import pandas as pd
    nucleic_df = pd.DataFrame()
    for i in range(12):
     month_nucleic = made_data(2022, i+1)
     month_df = pd.DataFrame(month_nucleic)
     nucleic_df = pd.concat([nucleic_df, month_df])
    data = [[row_data['date'], row_data['nucleic']] for row_index, row_data in nucleic_df.iterrows()]
    cal = Calendar(init_opts=opts.InitOpts(width='900px', height='500px'))
    cal.add(
     '', data, calendar_opts=opts.CalendarOpts(range_="2022",
     daylabel_opts=opts.CalendarDayLabelOpts(first_day=1, name_map='cn'))
    ).set_series_opts(
     label_opts=opts.LabelOpts(font_size=12)
    ).set_global_opts(
     title_opts=opts.TitleOpts(title='核酸检测日历', pos_left='450', pos_top='0',
     title_textstyle_opts=opts.TextStyleOpts(color='black', font_size=16)),
     visualmap_opts=opts.VisualMapOpts(
     max_=1, min_=0, orient="horizontal", is_piecewise=False,
     range_color=["white", "white", "green"], pos_top="250px", pos_left='50px'
     ),
    ).render('my_nucleic.html')

    日历效果:

    用Python设计你的核酸检测提醒日历

    pyecharts中的Calendar组件也可以实现日历可视化,不过格式比较固定,展示得比较密集。

    总结

    •  本文用python制作了核酸检测的日历,对核酸检测的天数进行可视化。
    •  本文用了两种方式实现一年的日历展示。
    •  需要源码,直接公众号后台输入:小助手,暗号“核酸日历”可以获取完整代码。
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。