m0_69387289 2023-03-15 21:00 采纳率: 50%
浏览 12
已结题

怎么修改这个代码使其对所有行的分词的词频进行统计然后输出到一个表

import pandas as pd
import jieba

df = pd.read_excel('xuqiufenxi.xls')
print(df)

#新建一列存放分词结果
df['fenci'] = ''

#遍历每一行的文本,并将分词结果存入新建的列中
for i in range(len(df)):
    print(i)
    df['fenci'][i] = ' '.join(jieba.cut(df['需求内容'][i]))
    print(df['fenci'][i])
    #统计每个词出现的次数
    word_count = {}
    for word in df['fenci'][i].split():
        if word in word_count:
            word_count[word] += 1
        else:
            word_count[word] = 1
    # 将word_count字典转换成dataframe
    word_count_df = pd.DataFrame(word_count.items(), columns=['word', 'count'])
    # 按照count值降序排序
    word_count_df = word_count_df.sort_values(by='count', ascending=False)
    #输出excel
    word_count_df.to_excel(f"{df['功能'][i]}.xlsx", index=False)

这个代码我运行出来是对表格的每一行进行分词并且统计词频之后,每一行生成一个表,怎么修改才能是对所有行的内容进行分词而且统计词频,然后把词频输出到一个表格中

```

  • 写回答

1条回答 默认 最新

  • Leodong. 2023-03-15 21:05
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ,具体如下:
    你可以把循环遍历每一行的代码放到一个函数中,然后在外层再循环遍历每一行并调用这个函数。修改后的代码如下:

    
    import pandas as pd
    import jieba
    
    # 定义函数来分词并统计词频
    def word_count(df_row):
        # 分词
        fenci_result = ' '.join(jieba.cut(df_row['需求内容']))
        
        # 统计词频
        word_count = {}
        for word in fenci_result.split():
            if word in word_count:
                word_count[word] += 1
            else:
                word_count[word] = 1
        
        # 将word_count字典转换成dataframe
        word_count_df = pd.DataFrame(word_count.items(), columns=['word', 'count'])
        # 按照count值降序排序
        word_count_df = word_count_df.sort_values(by='count', ascending=False)
        
        # 返回词频统计结果
        return word_count_df
    
    df = pd.read_excel('xuqiufenxi.xls')
    print(df)
    
    # 新建一个DataFrame存放所有行的词频统计结果
    word_count_all = pd.DataFrame(columns=['word', 'count'])
    
    # 遍历每一行的文本,并将分词结果存入新建的列中
    for i in range(len(df)):
        print(i)
        # 对每一行进行分词并统计词频
        word_count_df = word_count(df.iloc[i])
        # 将当前行的词频统计结果添加到总的DataFrame中
        word_count_all = pd.concat([word_count_all, word_count_df], ignore_index=True)
    
    # 按照count值降序排序
    word_count_all = word_count_all.sort_values(by='count', ascending=False)
    # 输出excel
    word_count_all.to_excel("word_count_all.xlsx", index=False)
    
    

    这样修改后,对所有行的需求内容进行分词并统计词频后,将结果输出到一个名为"word_count_all.xlsx"的Excel文件中。


    如果以上回答对您有所帮助,望采纳~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月15日

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行