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

背景需求:

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

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

【办公类-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班的孩子名字不容易背啊!要么取小名、要么就强行记忆吧。

 

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值