中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python制作我的核酸檢測日歷

發布時間:2023-05-11 10:46:08 來源:億速云 閱讀:111 作者:zzz 欄目:編程語言

本篇內容介紹了“如何用Python制作我的核酸檢測日歷”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

錄入數據

核酸檢測記錄能查到的最早時間范圍是一個月,以前的檢測記錄沒有提前保存,所以先用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(, 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(, 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制作我的核酸檢測日歷”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇义县| 扬中市| 烟台市| 红河县| 城口县| 韶关市| 诸暨市| 保德县| 巩留县| 康定县| 和平县| 逊克县| 广南县| 台州市| 水城县| 临安市| 安陆市| 荣成市| 禄丰县| 离岛区| 定襄县| 宿州市| 颍上县| 沁阳市| 河池市| 临夏县| 固原市| 东乡族自治县| 平顶山市| 巫山县| 崇阳县| 武夷山市| 鸡东县| 衡水市| 尉犁县| 彰化县| 九龙坡区| 张家港市| 金华市| 习水县| 平山县|