用Python制作我的核酸检测日历

快来,一起用Python制作你的核酸检测日历 坐标是深圳,2022年以来,大部分时候要求24小时,少部分时候要求48小时,更少的时候要求72小时,没有更长的情况。本文根据我的核酸检测记录,制作成日历,将核酸检测记录可视化到日历中。 阅读详情

我的坐标是深圳,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()

日历效果:

d49be0f9ca69b455d5a0e212c0272fe4.png

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

代码实现介绍:

  • 先合并首行的前7列单元格,写入年月,然后在第二行从左到右写入星期一到星期日,并设置格式。

  • 使用Python的日历库calendar返回当前月第一天是星期几,然后确定日历的1号的起始位置。

  • 从1号开始,依次在excel中写入日期,当列到达星期日时,换行并回到星期一的列。

  • 根据当天是否做了核酸,给单元格填充背景颜色。本文中如果当天做了核酸,则日期的背景设置为绿色(24小时核酸码的颜色),如果未做核酸,则日期的背景设置为白色。

  • 最后将结果保存到excel文件中,打开excel文件即可看到制作的日历。

制作一年的日历


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

2123dbc3ff401c25230775ecb3bbda02.png

e1a0838970535f2fff371ddde03b4c66.png

实现方式介绍:

  • 数据补充,由于只能查到一个月的核酸记录,所以本文除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')

日历效果:

53ee238247bc1f247e5cea6f613d32b1.png

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

总结


  • 本文用python制作了核酸检测的日历,对核酸检测的天数进行可视化。

  • 本文用了两种方式实现一年的日历展示。

  • 需要源码,直接公众号后台输入:小助手,暗号“核酸日历”可以获取完整代码。

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

点阅读原文,看B站我的视频!

python pyecharts绘制地图 本文使用python库——pyecharts绘制地图,修改标签样式并调色。重点在于参数调用方法(理解Union[Sequence[str]]或者看源码)。 阅读详情

相关推荐

疫情早期阶段判定的三大核心指标与实战框架

传染病流行阶段判定是公共卫生响应的基石,其本质在于从表象病例数转向传播动力学特征解析。基于代际间隔、R₀估算、检测覆盖率等原理,关键指标如倍增时间、检测阳性率、重症转化时间窗共同构成早期预警的技术支柱。这些指标不仅反映病毒传播加速度与防控盲区,更直接关联医疗资源调度与分级响应决策。在基层疾控、公卫教学与现场数据支持等高频应用场景中,它们支撑着48小时快速建模、跨区域差异化研判及动态预案生成。本文聚焦Covid-19疫情初期(确诊百例量级)的真实数据实践,系统拆解如何用公开数据锚定流行病学时间轴、校准检测偏差

weixin_30599521的博客 329

核酸检测录入python程序

核酸检测录入python程序一、背景二、大致功能三、模块讲解一、身份证号查验二、基本核酸检测信息上报到系统程序关于网址以及地址三、生成供核酸检测APP扫描的二维码程序关于生成二维码信息的缘由总程序 若有侵权之类的,请联系删除 此教程仅供参考 一、背景 近来河南商丘地区疫情较为严重,全面开展核酸检测工作,据猜测,考虑到设备、以及老人小孩没有智能手机,无法进行核酸检测信息填报,本社区采用了人工信息的填报(即,所有信息采用手写的方式)。这导致后期信息上报到系统出现困难,其过程步骤过于繁琐。开发了这个程序,方便了核

白衣酒客 6364

以深圳为例Python一键生成核酸检测日历

自从最近深圳又有疫情后,现在每天都要做核酸,嗓子都快做冒烟了。基于此我觉得有必要用程序生成自己的核酸检测日历。首先,我们需要从深i您-自主申报的微信小程序中提取自己的核酸检测记录,然后使用绘图库自动绘制检测日历。

小小明-代码实体的专栏 4万+

【Python百日进阶-数据分析】Day128 - plotly柱状图(条形图):px.bar()语法

文章目录一、语法二、参数三、返回类型四、实例4.1 Plotly Express条形图4.1.1 加拿大人口4.1.2 一维数据的条形图4.1.3 多维数据条形图4.1.4 Dash中的条形图4.1.5 彩条4.1.6 堆叠与分组条形图4.1.7 聚集成单色条4.1.8 带文本的条形图4.1.9 填充图案4.1.10 分面子图4.1.12 带Plotly Express的基本水平条形图4.1.13 配置水平条形图4.2 plotly.graph_objects条形图4.2.1 go的基本条形图4.2.2 分

专注于医院数据分析技术与系统开发的创作与分享。 1597

用Python创建核酸检测日历

通过使用Python编程,您可以更方便地追踪和计划核酸检测的日期,确保您的健康和安全。在本文中,我将向您展示如何使用Python编写代码来创建一个核酸检测日历。这个日历可以帮助您追踪和计划核酸检测的日期,以确保您的安全和健康。首先,我们需要安装Python的日历库,它提供了处理日期和时间的函数。它首先打印日历的表头,然后遍历日历的内容,打印每个日期。函数接受年份、月份和一组测试日期作为参数,并返回一个二维列表,表示核酸检测日历。您可以根据需要自定义年份、月份和测试日期,以适应您的实际情况。

ByteBuster的博客 121

2025年数学建模国赛高教社杯A题、B题、C题、D题、E题详细思路和代码 模型||排队论与计算机仿真

排队论为理解服务系统的静态特性提供了坚实的数学框架,而计算机仿真则赋予了研究者探索复杂、动态系统的强大能力。两者结合,成为解决数学建模竞赛中优化配置问题的利器。本文通过一个完整的。

2201_76125261的博客 722

数据可视化 - 日历图 - 自定义标签

import datetime import random from pyecharts import options as opts from pyecharts.charts import Calendar begin = datetime.date(2019, 1, 1) end = datetime.date(2019, 12, 31) data = [ [str(begin + datetime.timedelta(days=i)), random.randint(100...

记录项目交付的日常 876

数学之美 | 图论和网络爬虫

文章目录概述图论网络爬虫分析BFSDFSBFS + DFS参考资料 概述 这篇文章主要给大家介绍一下计算机算法中非常重要的一部分——图论,以及它在生活中的应用——网络爬虫。   图论 离散数学是当代数学的一个重要的分支,也是计算机科学的数学基础。它又包括四个分支,而图论便是其中一支,另外三个分别是:数理逻辑、集合论、近代数学。 图论中的图由一些节点和边构成,比如下面这张图 。 在图论中一个很基础...

小小酥梨的博客 3231

用Python制作核酸检测日历

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

m0_59485658的博客 350

基于Multisim的智能交通灯控制系统仿真与实现(含动态闪烁功能)

本文详细介绍了基于Multisim的智能交通灯控制系统仿真与实现,重点解析了动态闪烁功能的电路设计。通过555定时器、74LS192计数器和JK触发器等核心模块,实现了主干道与支干道的交替通行及黄灯1Hz闪烁功能,为交通灯控制系统设计提供了完整的仿真方案。

weixin_29174013的博客 426

逆向实战:从x-mini签名到RPC调用,Frida动态分析小红书加密协议

本文通过实战案例,详细拆解了小红书App的加密协议逆向分析过程。从识别x-mini签名等关键参数入手,结合静态分析与Frida动态Hook技术,追踪到核心的RPC调用入口,并最终封装成可独立调用的RPC函数,为安全研究和协议理解提供了完整的技术路径。

moss5的博客 1032

java/php/node.js/python本地美食推荐平台【2024年毕设】

本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。

暨阳程序 980

Android13 AudioFlinger混音流程全解析:从prepareTracks_l到threadLoop_write的底层实现

本文深入解析Android13 AudioFlinger混音流程,从prepareTracks_l到threadLoop_write的底层实现。详细剖析MixerThread的核心工作循环,包括音轨预处理、混音算法执行及硬件写入机制,帮助开发者优化音频性能并处理多音轨场景。

tea88的博客 1130

java/php/node.js/python课程与成绩管理【2024年毕设】

本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。

圆若程序 158

使用 MATLAB/Simulink 搭建一个步进电机细分控制系统的仿真模型

步进电机(Stepper Motor)是一种将电脉冲信号转换为角位移或线位移的执行元件,广泛应用于数控机床、3D打印、机器人、精密仪器等领域。其特点是开环控制、定位精度高、响应快、无累积误差。然而,传统步进电机在整步或半步运行时存在振动大、噪音高、转矩波动明显等问题。为了解决这些问题,细分控制技术被广泛采用。细分控制通过对绕组电流进行精确控制,使转子在两个整步之间实现平滑移动,从而提升电机的运行平稳性和位置精度。本教程将带你使用搭建一个步进电机细分控制系统的仿真模型,并通过仿真分析其。

amy_mhd的博客 427

1、VMware vSphere 全面指南:从入门到精通

本文全面介绍了VMware vSphere从入门到精通的完整知识体系,涵盖基础概念、环境适配、部署规划、安装配置、网络与存储准备、虚拟机创建与管理、资源组织、事件监控、巡检流程、主机配置文件管理、资源池优化、高可用性与容错应用,以及故障排除方法。结合实用工具和部署技巧,帮助读者系统掌握vSphere的核心功能与运维实践,提升虚拟化环境的稳定性与管理效率。

pz890123的博客 95

java/php/node.js/python基于微信小程序的校园二手物品交易系统【2024年毕设】

本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。

springboot666666的博客 728

3D iToF深度分辨率测量

本文展示了RGB-D传感器在三维测量中的高精度表现。标靶深度图显示其具备清晰、低噪、无干扰的特性,点云数据完整度高且轮廓分明。该技术已成功应用于物流(体积测量误差<1%)、工业(高反光部件装配检测)和农业(果蔬成熟度分级)等领域,验证了其硬件和算法的可靠性,能够满足不同场景下的三维测量需求。

dream it possible 252

java/php/net/python跑腿服务小程序【2024年毕设】

springboot基于微信小程序的古诗词在线学习系统的设计与实现。springboot微信小程序线上智慧农副产品交易平台。springboot微信小程序的酒店内部商品配送平台。springboot基于微信小程序的商品销售平台。springboot学生社团管理系统设计与实现。springboot校企合作平台的设计与实现。springboot基于微信小程序的转票系统。springboot建设工程智慧管理系统。springboot企业基本信息检索系统。springboot校园新闻采编发平台。

sheji229的博客 936

Arduino ESP32S3 基础入门教学大纲

ESP32环境、Arduino

追梦 3546

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java/php/net/python京津冀畅游网设计【2024年毕设】

springboot基于springboot和vue的音乐网站。springboot基于springBoot的柜存银行采购系统。springboot基于微信小程序的校园二手商城的设计与实现。springboot基于Android的团务智慧管理APP。springboot基于微信小程序的校园自助接派单平台。springboot微信支付的线上酒店预订微信小程序。springboot微信小程序的宿舍门禁管理系统。springboot彩妆专卖分享平台的设计与实现。springboot外卖点餐系统的设计和实现。

如梧程序设计 72

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java/php/node.js/python毕业生实习管理系统【2024年毕设】

本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。

圆若程序 879

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 好家伙!神器啊!Python 处理 PDF —— PyMuPDF 的安装与使用!
下一篇: 用了一个免费工具,代码质量变好了一倍?
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值