疫情原因,要求填写体温,于是造了一个用于随机填充体温的轮子。
[严正声明] 禁止任何组织、团体与个人以任何不正当方式使用此程序。
软件作者不承担任何由于不正确使用本程序造成的任何责任。】
用途:1.填充体温数据
2.获取其他表格数据(如学号等)避免反复粘贴复制
3.生成新的表格(格式(如合并单元格等)暂时无能为力,所能给予帮助,不胜感激)
表格格式如下

首先引入模块
import random
import pandas as pd
读取模板(格式如上图所示)
df = pd.read_excel(
"D:\\Documents\\学校事务\\学生体温监测统计表.xlsx",
header=1,
index_col=0
) # 忽略第一行,以第二行的内容作为表头;且以“序号”列作为索引列
此时可以print一下看看是否正确,不正确可以在此步骤中进行修正
print(df)
读取源信息(格式如下图所示)
raw = pd.read_excel(
"D:\\Documents\\学校事务\\班级信息.xlsx",
sheet_name="全",
header=0
) # 以第一行的内容作为表头,只读取“全”表中的内容

随机体温生成
因为体温每次填写时每人7天,每天3次,故可先定义一个函数用于填写一个人一周的,然后50(我们班50人);也可以先填写50人一天的再7,本软件思路为第一种。
def random_maker():
for i in range(3):
make = random.randrange(358, 367)/10
if(i == 0):
result = str(make) + (r"/")
elif(i == 1):
result = result + str(make) + (r"/")
else:
result = result + str(make)
return result
```
#### 开始正题:将数据置入pandas DataFrame 中
(请注意,理论上`df.loc()`函数可以直接用行号以及列号指定单元格位置以达到定位的目的,本软件为避免冲突以及方便读取使用列的名称作为参数)
```python
date = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
for i in range(50):
df.loc[i+3, "序号"] = i+1
#
# 请一定注意此处的i+3,详情查阅Pandas DataFrame 的相关说明
# Pandas DataFrame 本应从0 开始计数,但由于一开始读取时 “header=1,index_col=0”
# 让程序从第二行作为起始行计数
#
print("【1】序号结束\n")
df.loc[i+3, "姓名"] = raw.loc[i, "姓名"] #loc() 既可以用于新增,也可以替换
print("【2】姓名结束\n")
df.loc[i+3, "学号"] = raw.loc[i, "学号"]
print("【3】学号结束\n")
df.loc[i+3, "学院"] = "临床医学院"
print("【4】学院结束\n")
df.loc[i+3, "专业"] = "临床医学"
print("【5】专业结束\n")
df.loc[i+3, "年级班级"] = "XXXX级XX班"
print("【6】年级班级结束\n")
df.loc[i+3, "家庭住址(详细地址)"] = raw.loc[i, "家庭住址"]
print("【7】家庭住址(详细地址)结束\n")
for j in range(7):
df.loc[i+3, date[j]] = random_maker()
if(j == 6):
print("【8】体温结束\n")
结束,输出表格即可
df.to_excel("D:\\Desktop\\X班.xlsx")
完整代码如下
import random
import pandas as pd
df = pd.read_excel(
"D:\\Documents\\学校事务\\潍坊医学院学生体温监测统计表.xlsx",
header=1,
index_col=0
) # 忽略第一行,以第二行的内容作为表头;且以“序号”列作为索引列
print(df)
raw = pd.read_excel(
"D:\\Documents\\学校事务\\班级信息.xlsx",
sheet_name="全",
header=0
) # 以第一行的内容作为表头,只读取“全”表中的内容
def random_maker():
for i in range(3):
make = random.randrange(358, 367)/10
if(i == 0):
result = str(make) + (r"/")
elif(i == 1):
result = result + str(make) + (r"/")
else:
result = result + str(make)
return result
date = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
for i in range(49):
df.loc[i+3, "序号"] = i+1
print("【1】序号结束\n")
df.loc[i+3, "姓名"] = raw.loc[i, "姓名"]
print("【2】姓名结束\n")
df.loc[i+3, "学号"] = raw.loc[i, "学号"]
print("【3】学号结束\n")
df.loc[i+3, "学院"] = "临床医学院"
print("【4】学院结束\n")
df.loc[i+3, "专业"] = "临床医学"
print("【5】专业结束\n")
df.loc[i+3, "年级班级"] = "2021级临床9班"
print("【6】年级班级结束\n")
df.loc[i+3, "家庭住址(详细地址)"] = raw.loc[i, "家庭住址"]
print("【7】家庭住址(详细地址)结束\n")
for j in range(7):
df.loc[i+3, date[j]] = random_maker()
if(j == 6):
print("【8】体温结束\n")
# "潍坊医学院学生体温监测统计表(2022年1月24日-2022年1月30日)"
df.to_excel("D:\\Desktop\\9班.xlsx")
输出后由于无法搞定上面的合并单元格,暂时只能自行添加……
版权声明:本文为qq_43084170原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。