>  기사  >  백엔드 개발  >  Python을 사용하여 핵산 테스트 달력 만들기

Python을 사용하여 핵산 테스트 달력 만들기

王林
王林앞으로
2023-05-10 14:19:06828검색

Python을 사용하여 핵산 테스트 달력 만들기

제 좌표는 심천입니다. 2022년부터는 대부분 24시간이 필요하고, 어떤 경우에는 48시간이 필요하고, 더 드물게는 72시간이 필요한 상황도 없습니다.

본 글은 나의 핵산검사 기록을 바탕으로 달력으로 제작되었으며, 핵산검사 기록이 달력에 시각화되어 있습니다.

데이터 입력

핵산 검사 기록을 확인할 수 있는 가장 빠른 기간은 1개월입니다. 이전 검사 기록은 미리 저장되어 있지 않아 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의 달력 라이브러리 달력을 사용하여 이번 달의 첫 번째 날이 있는 요일을 반환한 다음 달력의 1일의 시작 위치를 결정합니다.
  • 1일부터 엑셀에 날짜를 하나씩 적어가며 열이 일요일이 되면 행을 감싸서 월요일 열로 돌아옵니다.
  • 그날 핵산 처리 여부에 따라 세포의 배경색을 채워주세요. 본 글에서는 해당 날짜에 핵산이 이루어지면 날짜 배경이 녹색(24시간 핵산 코드 색상)으로 설정됩니다. 핵산이 이루어지지 않으면 날짜 배경이 녹색으로 설정됩니다. 하얀색.
  • 마지막으로 결과를 엑셀 파일로 저장해 보세요. 엑셀 파일을 열어서 생성된 달력을 확인해보세요.

1년 달력 만들기

1달 달력을 만든 후 계속 확장하여 1년 달력을 만들어 보세요:

Python을 사용하여 핵산 테스트 달력 만들기

Python을 사용하여 핵산 테스트 달력 만들기

구현 방법 소개:

  • 데이터 보충: 2022년 8월을 제외하고 한 달 동안의 핵산 기록만 찾을 수 있으므로, 이 기사의 다른 달에 대한 데이터는 난수로 생성됩니다.
  • 한 달 달력을 만드는 코드를 캡슐화하고 연도와 월을 전달하여 원하는 달의 달력을 생성합니다.
  • 엑셀 파일에서 몇 달 동안 표시할 행을 디자인하면, 이 글에서는 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을 사용하여 핵산 검사 일수를 시각화하는 핵산 검사 달력을 만듭니다.
  • 이 글에서는 1년의 달력을 표시하기 위해 두 가지 방법을 사용합니다.
  • 소스 코드가 필요합니다. 공식 계정 배경: 보조자, 비밀번호 "핵산 달력"을 직접 입력하면 전체 코드를 얻을 수 있습니다.

위 내용은 Python을 사용하여 핵산 테스트 달력 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제