会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 用Python制作我的核酸检测日历!

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

时间:2025-11-05 02:14:21 来源:益强数据堂 作者:IT科技类资讯 阅读:930次

我的制作坐标是深圳,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对象,IT技术网而且会在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()

日历效果:

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

代码实现介绍:

 先合并首行的前7列单元格,写入年月,然后在第二行从左到右写入星期一到星期日,并设置格式。 使用Python的日历库calendar返回当前月第一天是星期几,服务器租用然后确定日历的1号的起始位置。

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

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

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

制作一年的日历

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

实现方式介绍:

 数据补充,由于只能查到一个月的核酸记录,所以本文除2022年8月外,其他月份的数据用随机数生成。 对制作一个月日历的WordPress模板代码进行封装,传入年和月,就可以生成任意一个月的日历。

 在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)

日历效果:

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

总结

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

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

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

(责任编辑:域名)

推荐内容
  • 网吧电脑脱离主机教程(轻松拆解,自由组装,享受自由游戏体验)
  • 全面评析华为P10128G存储容量的性能和优势(华为P10128G存储容量的扩展性与用户体验)
  • 华为长截图功能(领先一步,华为长截图带来全新的屏幕截图体验)
  • 以朵唯A3手机质量好不好?(了解朵唯A3手机的品质和性能如何?)
  • 使用U盘安装固态硬盘系统教程(一步步教你如何将系统安装到固态硬盘上)
  • 索尼录音笔的功能和性能测评(了解索尼录音笔的优势和适用场景)