首页 > 其他分享 >【办公类-19-01-04】统计孩子中2班名字的同音字(读音、汉字)

【办公类-19-01-04】统计孩子中2班名字的同音字(读音、汉字)

时间:2024-09-02 21:26:58浏览次数:14  
标签:01 sheet name 04 19 cols dict key print

背景需求:

开学第一天,听搭档和阿姨叫孩子的名字,感觉孩子中间有很多同音字。

为了更好的掌握重复率,我用以前做的几个代码,再次检索班级幼儿的姓氏字同字率、姓氏字同音率,名字同字率、名字同音率。

【办公类-19-01-03】办公中的思考——Python,统计孩子名字的同音字(拼音)_python名称拼音相似的-CSDN博客文章浏览阅读667次。文章讲述了中班班主任运用Python进行姓名拼音分析,以帮助记忆孩子们的名字,特别是处理同姓和同音字的情况。通过将名字转为拼音并进行词频分析,教师能更准确地区分和记忆孩子们的名字,同时这种活动也促进了孩子们对名字和拼音的认识。https://blog.csdn.net/reasonsummer/article/details/129627144icon-default.png?t=N7T8https://blog.csdn.net/reasonsummer/article/details/129627144【教学类-47-02】20240308古诗《春夜喜雨》里的幼儿姓名(同音同字、同音不同字)-CSDN博客文章浏览阅读1k次,点赞13次,收藏11次。【教学类-47-02】20240308古诗《春夜喜雨》里的幼儿姓名(同音同字、同音不同字)https://blog.csdn.net/reasonsummer/article/details/136559314

一、08名字中拼音同音字

'''
幼儿名字中拼音同音字(拼音)
AI对话大师,阿夏
20240902
'''


from pandas import DataFrame, Series
import pandas as pd
import numpy as np
import xlrd
from xpinyin import Pinyin

 # 读取列
worksheet = xlrd.open_workbook(r'C:\Users\jg2yXRZ\OneDrive\桌面\中2班分析\学生名单.xlsx')
sheet_names= worksheet.sheet_names()
print(sheet_names)

for sheet_name in sheet_names:
    sheet = worksheet.sheet_by_name(sheet_name)
    rows = sheet.nrows # 获取行数
    cols = sheet.ncols # 获取列数,尽管没用到
    all_content = []
    cols = sheet.col_values(1) # 获取第二列内容, 数据格式为此数据的原有格式(原:字符串,读取:字符串;  原:浮点数, 读取:浮点数)

    print(cols[1:])
    # ['张三', '李四', '王五刘', '朝气吧'……]
    print(type(cols[1:]))    #查看数据类型 <class 'list'>

listall=[]
for x in cols[1:]:
    for y in x:
        p = Pinyin()
        # result1 = p.get_pinyin('{}'.format(y))
        result1 = p.get_pinyin('{}'.format(y), tone_marks='marks')
        print(result1)
        listall.append(result1)
print(listall)
# ['zhang', 'san', 'li', 'si', 'wang'……]

#     # 'ye-fu-tian'
#     # result2 = p.get_pinyin('叶伏天', tone_marks='marks')
#     # 'yè-fú-tiān'

name_dict = {}
for name in listall:
    # 取出字典中的所有keys值     
    key_list = name_dict.keys()
    # key_list = name_dict[0]
    # print(key_list)
    if name in key_list:
        name_dict[name] += 1
    else:
        name_dict[name] = 1

# # 根据字典中的value值进行倒序排序

name_dict = sorted(name_dict.items(), key=lambda item:item[1], reverse=True)
print(name_dict )

d=[]
for c in range(0,len(name_dict)):
    aa=name_dict[c][0]
    bb=name_dict[c][1]
    print(aa,bb)
    # zhang 1
    # san 1
    # li 1
    # si 1

chén 7
yì 6
yī 5
zǐ 4
wáng 4
zhāng 3
yú 2
yuè 2
bó 2
yǐn 2
yáng 2
wǎn 2
xīn 2
wú 2
xī 2
lǐ 2
táng 2

二、名字中最多的字

'''
幼儿名字同字(汉字)
AI对话大师,阿夏
20240902
'''
from pandas import DataFrame, Series
import pandas as pd
import numpy as np
import xlrd


 # 读取列
worksheet = xlrd.open_workbook(r'C:\Users\jg2yXRZ\OneDrive\桌面\中2班分析\学生名单.xlsx')
sheet_names= worksheet.sheet_names()
print(sheet_names)

for sheet_name in sheet_names:
    sheet = worksheet.sheet_by_name(sheet_name)
    rows = sheet.nrows # 获取行数
    cols = sheet.ncols # 获取列数,尽管没用到
    all_content = []
    cols = sheet.col_values(1) # 获取第二列内容, 数据格式为此数据的原有格式(原:字符串,读取:字符串;  原:浮点数, 读取:浮点数)

    print(cols[1:])
    print(cols[1:])
    print(type(cols[1]))    #查看数据类型

# name_list = ["张三", "李四", "周瑜", "张三", "张三", "李四", "王五", "张飞", "张飞", "周瑜"]

#提取第一个姓(目前没有复姓,所以都取第一个姓)
b = []
for i in cols[1:]:    # cols[1:]不要第一行的”教职工名字“
    # for c in i:   #在所有的名字中的第1-4个字开始遍历(包括姓氏)
    for c in i[1:]:  # 在所有的名字中的第2个字开始遍历(不包括姓氏)
        print(c)
        b.append(c)
print(b)

name_dict = {}
for name in b:
    # 取出字典中的所有keys值     
    key_list = name_dict.keys()
    # key_list = name_dict[0]
    # print(key_list)
    if name in key_list:
        name_dict[name] += 1
    else:
        name_dict[name] = 1

# # 根据字典中的value值进行倒序排序

name_dict = sorted(name_dict.items(), key=lambda item:item[1], reverse=True)
print(name_dict )

d=[]
for c in range(0,len(name_dict)):
    aa=name_dict[c][0]
    bb=name_dict[c][1]
    print(aa,bb)

一 4
奕 2
博 2
子 2
梓 2
宸 2
晨 2
亦 2

其余的字都只出现过一次

三、姓氏的重复字


'''
目标:中2班幼儿姓氏与名字的出现频率(汉字版)
作者:阿夏
时间:2024年9月1日'''

from pandas import DataFrame, Series
import pandas as pd
import numpy as np
import xlrd


 # 读取列
worksheet = xlrd.open_workbook(r'C:\Users\jg2yXRZ\OneDrive\桌面\中2班分析\学生名单.xlsx')
sheet_names= worksheet.sheet_names()
print(sheet_names)

for sheet_name in sheet_names:
    sheet = worksheet.sheet_by_name(sheet_name)
    rows = sheet.nrows # 获取行数
    cols = sheet.ncols # 获取列数,尽管没用到
    all_content = []
    cols = sheet.col_values(1) # 获取第二列内容, 数据格式为此数据的原有格式(原:字符串,读取:字符串;  原:浮点数, 读取:浮点数)

    print(cols)
    print(cols[1:])    # 不要第1行的标题的文字
    print(type(cols[1]))    #查看数据类型


print('--第3类:名字重复(不考虑声调)-------')
# name_list = ["张三", "李四", "周瑜", "张三", "张三", "李四", "王五", "张飞", "张飞", "周瑜"]

#提取第一个姓(目前没有复姓,所以都取第一个姓)
b1 = []
for i1 in cols[1:]:    # 第1行的教职工姓名不要,从1(第二行开始计数)
    for i2 in i1[1:]:   
        b1.append(i2)
# print(b) ["张", "李", "周", "张", "张", "李”]

name_dict1 = {}
for name1 in b1:
    # 取出字典中的所有keys值     
    key_list1 = name_dict1.keys()
    # key_list = name_dict[0]
    # print(key_list)
    if name1 in key_list1:
        name_dict1[name1] += 1
    else:
        name_dict1[name1] = 1

# # 根据字典中的value值进行倒序排序

name_dict1 = sorted(name_dict1.items(), key=lambda item:item[1], reverse=True)
print(name_dict1)

d1=[]
for c1 in range(0,len(name_dict1)):
    aa1=name_dict1[c1][0]
    bb1=name_dict1[c1][1]
    print(aa1,bb1)

print('--第1类:名字长度3个名字2个名字-------')
# 名字的长度 3字长度的名字 2字长度的名字
three = []
two=[]
for x in cols[1:]:    # 第1行的教职工姓名不要,从1(第二行开始计数)
    if len(x)==3:        # 如果名字等于3个字
        three.append(x)
    if len(x)==2:    # 如果名字等于2个字
        two.append(x)
print(three)
print('3个名字的孩子',len(three),'人\n')
print(two)
print('2个名字的孩子',len(two),'人\n')

# print(b) ["张", "李", "周", "张", "张", "李”]


print('--第2类:姓氏重复(不考虑声调)-------')
# name_list = ["张三", "李四", "周瑜", "张三", "张三", "李四", "王五", "张飞", "张飞", "周瑜"]

#提取第一个姓(目前没有复姓,所以都取第一个姓)
b = []
for i in cols[1:]:    # 第1行的教职工姓名不要,从1(第二行开始计数)
    a=i[0]
    b.append(a)
print(b) 
# ["张", "李", "周", "张", "张", "李”]

name_dict = {}
for name in b:
    # 取出字典中的所有keys值     
    key_list = name_dict.keys()
    # key_list = name_dict[0]
    # print(key_list)
    if name in key_list:
        name_dict[name] += 1
    else:
        name_dict[name] = 1
print(name_dict)

# # 根据字典中的value值进行倒序排序

name_dict = sorted(name_dict.items(), key=lambda item:item[1], reverse=True)
print(name_dict )

# for nn in name_dict:
#     print(nn)

d=[]
for c in range(0,len(name_dict)):
    aa=name_dict[c][0]
    bb=name_dict[c][1]
    print(aa,bb)

print('--第3类:名字重复(不考虑声调)-------')
# name_list = ["张三", "李四", "周瑜", "张三", "张三", "李四", "王五", "张飞", "张飞", "周瑜"]

#提取第一个姓(目前没有复姓,所以都取第一个姓)
b1 = []
for i1 in cols[1:]:    # 第1行的教职工姓名不要,从1(第二行开始计数)
    for i2 in i1[1:]:   
        b1.append(i2)
# print(b) ["张", "李", "周", "张", "张", "李”]

# name_dict1 = {}
# for name1 in b1:
#     # 取出字典中的所有keys值     
#     key_list1 = name_dict1.keys()
#     # key_list = name_dict[0]
#     # print(key_list)
#     if name1 in key_list1:
#         name_dict1[name1] += 1
#     else:
#         name_dict1[name1] = 1

# # # 根据字典中的value值进行倒序排序

# name_dict1 = sorted(name_dict1.items(), key=lambda item:item[1], reverse=True)
# print(name_dict )

# d1=[]
# for c1 in range(0,len(name_dict1)):
#     aa1=name_dict1[c1][0]
#     bb1=name_dict1[c1][1]
#     print(aa1,bb1)




王 4
张 3
余 2
尹 2
吴 2
陈 2
李 2
唐 2

四、姓氏和名字中的拼音

 

'''
目标:中2班幼儿姓氏与名字的出现频率(拼音声调版)
作者:阿夏
时间:2024年9月2日'''

from pandas import DataFrame, Series
import pandas as pd
import numpy as np
import xlrd
from xpinyin import Pinyin

print('------ 读取姓氏或名字(不考虑声调)----------')
worksheet = xlrd.open_workbook(r'C:\Users\jg2yXRZ\OneDrive\桌面\中2班分析\学生名单.xlsx')
sheet_names= worksheet.sheet_names()
# print(sheet_names)
# 中4
 
for sheet_name in sheet_names:
    sheet = worksheet.sheet_by_name(sheet_name)
    rows = sheet.nrows # 获取行数
    cols = sheet.ncols # 获取列数,尽管没用到
    all_content = []
    cols = sheet.col_values(1) # 获取第二列内容, 数据格式为此数据的原有格式(原:字符串,读取:字符串;  原:浮点数, 读取:浮点数)
    # print(cols[1:])
#     # # ['张三', '李四', '王五刘', '朝气吧'……]
#     # print(type(cols[1:]))    #查看数据类型 <class 'list'>
#     # 所有的汉字列表


listall=[]
for x in cols[1:]:
    for y in x[1:]:
        p = Pinyin()
        result1 = p.get_pinyin('{}'.format(y))
        # print(result1)
        listall.append(result1)
# print(listall)
# ['zhang', 'san', 'li', 'si', 'wang'……]
# 所有拼音,无声调

name_dict = {}
for name in listall:
    # 取出字典中的所有keys值     
    key_list = name_dict.keys()
    # key_list = name_dict[0]
    # print(key_list)
    if name in key_list:
        name_dict[name] += 1
    else:
        name_dict[name] = 1
# 所有拼音,无声调

 
# # 根据字典中的value值进行倒序排序
 
name_dict = sorted(name_dict.items(), key=lambda item:item[1], reverse=True)
print(name_dict )
 
d=[]
for c in range(0,len(name_dict)):
    aa=name_dict[c][0]
    bb=name_dict[c][1]
    print(aa,bb)
    # 拼音 无声调 数量


   
print('------ 读取姓氏或名字(考虑声调)----------')
    
# from pandas import DataFrame, Series
# import pandas as pd
# import numpy as np
# import xlrd
# from xpinyin import Pinyin
 
 # 读取列
worksheet = xlrd.open_workbook(r'C:\Users\jg2yXRZ\OneDrive\桌面\中2班分析\学生名单.xlsx')
sheet_names= worksheet.sheet_names()
print(sheet_names)
# ['中4']

 
for sheet_name in sheet_names:
    sheet = worksheet.sheet_by_name(sheet_name)
    rows = sheet.nrows # 获取行数
    cols = sheet.ncols # 获取列数,尽管没用到
    all_content = []
    cols = sheet.col_values(1) # 获取第二列内容, 数据格式为此数据的原有格式(原:字符串,读取:字符串;  原:浮点数, 读取:浮点数)
 
    # print(cols[1:])
    # # ['张三', '李四', '王五刘', '朝气吧'……]
    # print(type(cols[1:]))    #查看数据类型 <class 'list'>
    # 汉字姓名
 
listall=[]
for x in cols[1:]:
    # for y in x[0]:        # 0=只要姓氏
    for y in x[1:]:        # 0=只要名
        p = Pinyin()
        # result1 = p.get_pinyin('{}'.format(y))
        result1 = p.get_pinyin('{}'.format(y), tone_marks='marks')
        print(result1)
        listall.append(result1)
print(listall)
# ['zhang', 'san', 'li', 'si', 'wang'……]
 
#     # 'ye-fu-tian'
#     # result2 = p.get_pinyin('叶伏天', tone_marks='marks')
#     # 'yè-fú-tiān'
 
name_dict = {}
for name in listall:
    # 取出字典中的所有keys值     
    key_list = name_dict.keys()
    # key_list = name_dict[0]
    # print(key_list)
    if name in key_list:
        name_dict[name] += 1
    else:
        name_dict[name] = 1
 
# # 根据字典中的value值进行倒序排序
 
name_dict = sorted(name_dict.items(), key=lambda item:item[1], reverse=True)
print(name_dict )
 
d=[]
for c in range(0,len(name_dict)):
    aa=name_dict[c][0]
    bb=name_dict[c][1]
    print(aa,bb)
    # zhang 1
    # san 1
    # li 1
    # si 1

# # ————————————————
# # 版权声明:本文为CSDN博主「阿夏reasonsummer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# # 原文链接:https://blog.csdn.net/reasonsummer/article/details/129627144
 

yì 6
chén 5
yī 5
zǐ 4
yuè 2
bó 2
wǎn 2
xīn 2
xī 2

结论显示

1、姓氏重率:

王 4 张 3,是大姓,

余 、尹、吴、陈、李、唐分别有两人

2、姓名重率:

yì 6= 奕 2+亦 2+易1 + 逸 1

chén 5=宸 2+晨 2 + 辰 1

yī 5= 一 4 +伊 1

zǐ 4= 梓 2+子 2

……

难怪感觉中2班的名字读起来有重复感——27人中有19人是重复姓氏、名字中又有30个字的读音有重复!!!

这和2020年公安部户籍管理中心统计的名字有相似性。

 

特别是“一”,这两年带的中班,每个班级都有不少“独一无二”的孩子,容易写名字。

写在最后:

中2班的孩子名字不容易背啊!要么取小名、要么就强行记忆吧。

 

标签:01,sheet,name,04,19,cols,dict,key,print
From: https://blog.csdn.net/reasonsummer/article/details/141796519

相关文章

  • GeoScene Pro教程(004):GeoScene Pro制作与使用矢量切片包
    文章目录1、为什么创建矢量切片**提高渲染效率****优化数据传输****增强用户体验****更好的数据管理****便于数据分析和处理**2、创建矢量切片包3、导入到GeoSceneOnline1、为什么创建矢量切片矢量切片(VectorSlicing)是一种将大规模矢量数据(如地图......
  • 1049. 最后一块石头的重量 II(leetcode)
    https://leetcode.cn/problems/last-stone-weight-ii/description/思路较为巧妙的dp题,关键点在于如何将问题转化为01背包,有点贪心的思想主要是划分为两堆尽可能相等的石碓,然后判断能否凑出这个偏小的石碓(若干石头中选,能否选出这个价值)这里根据f[i]的定义可以有两种做法,1.f......
  • eclipse 激活版免安装版 64位 2018
    前言eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。一、下载地址下载链接:eclipsev2018.zip二、安装步骤1、下载解压后将eclipse.exe发送到桌面快捷方式2、点击桌面图标启动3、启动时选择工......
  • .NET周刊【9月第1期 2024-09-01】
    国内文章【音视频通话】使用asp.netcore8+vue3实现高效音视频通话https://www.cnblogs.com/1996-Chinese-Chen/p/18384394该文章描述了使用SRS实现音视频通话和共享桌面的经验。从最初使用nginx的RTMP到研究SRS和ZLMediaKit的过程,再到最终实现功能的详细步骤,涵盖了服务器配......
  • 《黑神话:悟空》193+MOD整合包,画质、性能、武器、人物替换、CT表、存档等
    全网收集整理了如下整合包内容,包含《黑神话:悟空》全成就解锁存档锐化补丁、低性能卡顿、画质补丁Xbox手柄图标替换为NsPro图标物品掉落MOD大地图MOD等。下载地址:点击进入如图所示: 以下应该是全网最全《黑神话:悟空》MOD了,一个99+,我罗列一下吧荒野大镖客2斧头替换金......
  • Java开发语言:ssm人力资源管理系统010(附免费源码)
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设人......
  • 高密度、高速卡边缘连接器,ME1005610201091、ME1005610203071、ME1005613401311、ME100
    系列概述MiniCoolEdge是一款0.60mm高密度、高速卡边缘连接器,适用于新一代小型系统。这种精细间距解决方案支持多种板对板应用,如直角、夹层/共面,并提供电缆互连选件。这些连接器符合SFF-TA-1002、GenZ、EDSFF和OCPNIC3.0规范。常见应用包括固态驱动器、网络接口卡和......
  • 【2025考研英语高分写作:20大必备范文】经典范文001 辞职信 P33
    Directions:        TwomonthsagoyougotajobasaneditorforthemagazineDesign&Fashions.Butnowyoufindthattheworkisnotwhatyouexpected.Youdecidetoquit.Writealettertoyourboss,Mr.Wang,tellinghimyourdecision,stating......
  • 信息学奥赛初赛天天练-82-NOIP2014普及组-完善程序-机器语言、汇编语言、高级语言、计
    1NOIP2014普及组基础题11以下哪个是面向对象的高级语言()A汇编语言BC++CFortranDBasic2TB代表的字节数是()A2的10次方B2的20次方C2的30次方D2的40次方3二进制数00100100和00010101的和是()A00101000B001010......
  • CF1998E2 Eliminating Balls With Merging (Hard Version)
    原题链接考虑对于每个\(i\),算出向左扩展到\(1\)时向右至少和至多扩展到哪里,记为\(minr\)和\(maxr\)。那么也就是说每个\(i\)会对\(minr\simmaxr\)做出贡献,差分一下就可以了。重点是怎么计算这两个东西。先说\(maxr\)。如果暴力跳,过程是:先向左扩展直到不能扩展,然后......