背景需求为了最大化利用资金我在微信的腾讯理财通里买“活期”的48只货币基金每只150元预估每天能获得1分钱利息。但是根据往期结果1、每天都有几只货币基金是0元偶尔一天2、有几只货币基金的七天年化收益显示150元获利0.01元即时投入300元也无法获得1分利息。长期不生息统计过程随着存款利息一降再降我把货币基金的本金从150提升到200元但是还是没法保证每天每只货币基金都生成1分钱每天都有4-6只基金没法生息输入到统计表内用deepseek写python代码做基金名称的词频统计import pandas as pd import re from collections import Counter import jieba import openpyxl from openpyxl import Workbook def extract_high_frequency_words(input_file123.xlsx, output_sheet_name高频词统计, top_nNone): 读取Excel文件提取高频词并输出到新工作表 参数: input_file: 输入的Excel文件名 output_sheet_name: 输出的工作表名称 top_n: 提取前N个高频词None表示全部 # 1. 读取Excel文件 try: df pd.read_excel(input_file, sheet_name0, headerNone) print(f成功读取文件: {input_file}) print(f数据形状: {df.shape}) except Exception as e: print(f读取文件失败: {e}) return # 2. 合并所有单元格的内容 all_text for row in df.values: for cell in row: if pd.notna(cell): # 检查是否为空值 all_text str(cell) print(f提取的文本长度: {len(all_text)} 字符) # 3. 文本预处理和分词 # 使用jieba进行中文分词 words jieba.cut(all_text) # 4. 过滤停用词和单字 # 定义停用词可以根据需要扩展 stopwords set([的, 了, 在, 是, 我, 有, 和, 就, 不, 人, 都, 一, 一个, 上, 也, 很, 到, 说, 要, 去, 你, 会, 着, 没有, 看, 好, 把, 但, 能, 又, 而, 那, 这个, 还, 与, 或, 等, 从, 为, 对, 用, 于, 之, 其, 所, 以]) # 过滤长度1且不在停用词中 filtered_words [word for word in words if len(word) 1 and word not in stopwords] # 5. 统计词频 word_counts Counter(filtered_words) # 6. 按词频从大到小排序 sorted_words sorted(word_counts.items(), keylambda x: x[1], reverseTrue) # 限制输出数量 if top_n: sorted_words sorted_words[:top_n] print(f提取到 {len(sorted_words)} 个高频词) # 7. 创建新的DataFrame用于输出 result_df pd.DataFrame(sorted_words, columns[词语, 出现次数]) # 8. 将结果写入新的工作表 try: # 使用ExcelWritermodea表示追加 with pd.ExcelWriter(input_file, engineopenpyxl, modea) as writer: # 检查工作表是否已存在 if output_sheet_name in writer.book.sheetnames: # 如果存在删除原有工作表 std writer.book[output_sheet_name] writer.book.remove(std) # 写入新工作表 result_df.to_excel(writer, sheet_nameoutput_sheet_name, indexFalse) print(f成功将高频词统计写入工作表: {output_sheet_name}) except Exception as e: # 如果文件不存在或无法追加创建新文件 print(f无法追加到现有文件正在创建新文件...) output_file 高频词统计结果.xlsx with pd.ExcelWriter(output_file, engineopenpyxl) as writer: result_df.to_excel(writer, sheet_nameoutput_sheet_name, indexFalse) print(f结果已保存到新文件: {output_file}) # 9. 打印前20个高频词供查看 print(\n前20个高频词预览:) for i, (word, count) in enumerate(sorted_words[:20], 1): print(f{i:3d}. {word:15s} : {count:5d}次) def extract_high_frequency_words_simple(input_file123.xlsx): 简化版本只按空格分割适用于英文或已分好词的中文 import pandas as pd from collections import Counter # 读取Excel df pd.read_excel(input_file, sheet_name0, headerNone) # 合并文本 all_text .join([str(cell) for row in df.values for cell in row if pd.notna(cell)]) # 按空格分词 words all_text.split() # 统计 word_counts Counter(words) sorted_words sorted(word_counts.items(), keylambda x: x[1], reverseTrue) # 输出到新工作表 result_df pd.DataFrame(sorted_words, columns[词语, 出现次数]) with pd.ExcelWriter(input_file, engineopenpyxl, modea) as writer: if 高频词统计 in writer.book.sheetnames: std writer.book[高频词统计] writer.book.remove(std) result_df.to_excel(writer, sheet_name高频词统计, indexFalse) print(高频词统计完成) return result_df # 主程序 if __name__ __main__: # 使用jieba分词版本适合中文 pathrC:\Users\jg2yXRZ\OneDrive\桌面\淘宝数据合并金珠 extract_high_frequency_words(path r\48只货币基金统计.xlsx, 高频词统计, top_n100) # 如果文本已经是分词好的可以使用简化版本 # extract_high_frequency_words_simple(123.xlsx) 对每天没有生成0.01元的货币基金进行词频统计 deepseek 阿夏 20260307 import pandas as pd import re from collections import Counter import jieba import openpyxl from openpyxl import Workbook import os def extract_high_frequency_words(input_file123.xlsx, output_sheet_name高频词统计, top_nNone): 读取Excel文件提取高频词并输出到新工作表 从第二行开始统计跳过表头 参数: input_file: 输入的Excel文件名 output_sheet_name: 输出的工作表名称 top_n: 提取前N个高频词None表示全部 # 1. 读取Excel文件 try: # 读取时指定第一行不作为表头但我们需要跳过它 df pd.read_excel(input_file, sheet_name0, headerNone) print(f成功读取文件: {input_file}) print(f数据形状: {df.shape}) print(f总行数: {len(df)}) except Exception as e: print(f读取文件失败: {e}) return # 2. 从第二行开始合并所有单元格的内容 all_text # 使用iloc从第1行开始0是表头1开始是数据 for i in range(1, len(df)): # 从索引1开始即第二行 row df.iloc[i] for cell in row: if pd.notna(cell): # 检查是否为空值 all_text str(cell) print(f从第二行开始提取的文本长度: {len(all_text)} 字符) print(f处理的数据行数: {len(df)-1} 行) # 3. 文本预处理和分词 # 使用jieba进行中文分词 words jieba.cut(all_text) # 4. 过滤停用词和单字 # 定义停用词可以根据需要扩展 stopwords set([的, 了, 在, 是, 我, 有, 和, 就, 不, 人, 都, 一, 一个, 上, 也, 很, 到, 说, 要, 去, 你, 会, 着, 没有, 看, 好, 把, 但, 能, 又, 而, 那, 这个, 还, 与, 或, 等, 从, 为, 对, 用, 于, 之, 其, 所, 以, 基金, 货币, 代码, 名称, 万份, 收益, 年化, 七日, 近一, 月, 周, 日, 年, 收益率, 净值, 类型, 日期, 时间]) # 过滤长度1且不在停用词中 filtered_words [word for word in words if len(word) 1 and word not in stopwords] # 5. 统计词频 word_counts Counter(filtered_words) # 6. 按词频从大到小排序 sorted_words sorted(word_counts.items(), keylambda x: x[1], reverseTrue) # 限制输出数量 if top_n: sorted_words sorted_words[:top_n] print(f提取到 {len(sorted_words)} 个高频词) # 7. 创建新的DataFrame用于输出 result_df pd.DataFrame(sorted_words, columns[词语, 出现次数]) # 8. 将结果写入新的工作表 try: # 使用ExcelWritermodea表示追加 with pd.ExcelWriter(input_file, engineopenpyxl, modea) as writer: # 检查工作表是否已存在 if output_sheet_name in writer.book.sheetnames: # 如果存在删除原有工作表 std writer.book[output_sheet_name] writer.book.remove(std) # 写入新工作表 result_df.to_excel(writer, sheet_nameoutput_sheet_name, indexFalse) print(f成功将高频词统计写入工作表: {output_sheet_name}) except Exception as e: # 如果文件不存在或无法追加创建新文件 print(f无法追加到现有文件正在创建新文件...) output_file os.path.join(os.path.dirname(input_file), 高频词统计结果.xlsx) with pd.ExcelWriter(output_file, engineopenpyxl) as writer: result_df.to_excel(writer, sheet_nameoutput_sheet_name, indexFalse) print(f结果已保存到新文件: {output_file}) # 9. 打印前20个高频词供查看 print(\n前20个高频词预览:) for i, (word, count) in enumerate(sorted_words[:20], 1): print(f{i:3d}. {word:15s} : {count:5d}次) def extract_high_frequency_words_simple(input_file123.xlsx, skip_rows1): 简化版本只按空格分割适用于英文或已分好词的中文 参数: input_file: 输入的Excel文件名 skip_rows: 跳过的行数默认为1跳过第一行表头 import pandas as pd from collections import Counter import os # 读取Excel跳过指定行数 df pd.read_excel(input_file, sheet_name0, headerNone, skiprowsskip_rows) print(f跳过前{skip_rows}行后读取了 {len(df)} 行数据) # 合并文本 all_text .join([str(cell) for row in df.values for cell in row if pd.notna(cell)]) # 按空格分词 words all_text.split() # 统计 word_counts Counter(words) sorted_words sorted(word_counts.items(), keylambda x: x[1], reverseTrue) # 输出到新工作表 result_df pd.DataFrame(sorted_words, columns[词语, 出现次数]) try: with pd.ExcelWriter(input_file, engineopenpyxl, modea) as writer: if 高频词统计 in writer.book.sheetnames: std writer.book[高频词统计] writer.book.remove(std) result_df.to_excel(writer, sheet_name高频词统计, indexFalse) print(f高频词统计完成共统计 {len(sorted_words)} 个词语) except: output_file os.path.join(os.path.dirname(input_file), 高频词统计结果.xlsx) result_df.to_excel(output_file, sheet_name高频词统计, indexFalse) print(f结果已保存到新文件: {output_file}) return result_df def extract_high_frequency_words_with_header(input_file123.xlsx, header_row0, output_sheet_name高频词统计, top_nNone): 进阶版本可以指定表头行从表头之后开始统计 参数: input_file: 输入的Excel文件名 header_row: 表头所在的行号0表示第一行是表头 output_sheet_name: 输出的工作表名称 top_n: 提取前N个高频词None表示全部 # 1. 读取Excel文件获取所有数据 try: df_all pd.read_excel(input_file, sheet_name0, headerNone) print(f成功读取文件: {input_file}) print(f总行数: {len(df_all)}) # 从表头后一行开始 start_row header_row 1 df df_all.iloc[start_row:] # 从表头后一行开始到末尾 print(f跳过前{start_row}行后处理 {len(df)} 行数据) except Exception as e: print(f读取文件失败: {e}) return # 2. 合并所有单元格的内容 all_text for row in df.values: for cell in row: if pd.notna(cell): # 检查是否为空值 all_text str(cell) print(f提取的文本长度: {len(all_text)} 字符) # 3. 文本预处理和分词 words jieba.cut(all_text) # 4. 过滤停用词和单字 stopwords set([的, 了, 在, 是, 我, 有, 和, 就, 不, 人, 都, 一, 一个, 上, 也, 很, 到, 说, 要, 去, 你, 会, 着, 没有, 看, 好, 把, 但, 能, 又, 而, 那, 这个, 还, 与, 或, 等, 从, 为, 对, 用, 于, 之, 其, 所, 以, 基金, 货币, 代码, 名称, 万份, 收益, 年化, 七日, 近一, 月, 周, 日, 年, 收益率, 净值, 类型, 日期, 时间]) filtered_words [word for word in words if len(word) 1 and word not in stopwords] # 5. 统计词频 word_counts Counter(filtered_words) # 6. 按词频从大到小排序 sorted_words sorted(word_counts.items(), keylambda x: x[1], reverseTrue) if top_n: sorted_words sorted_words[:top_n] print(f提取到 {len(sorted_words)} 个高频词) # 7. 创建新的DataFrame用于输出 result_df pd.DataFrame(sorted_words, columns[词语, 出现次数]) # 8. 将结果写入新的工作表 try: with pd.ExcelWriter(input_file, engineopenpyxl, modea) as writer: if output_sheet_name in writer.book.sheetnames: std writer.book[output_sheet_name] writer.book.remove(std) result_df.to_excel(writer, sheet_nameoutput_sheet_name, indexFalse) print(f成功将高频词统计写入工作表: {output_sheet_name}) except Exception as e: print(f无法追加到现有文件正在创建新文件...) output_file os.path.join(os.path.dirname(input_file), 高频词统计结果.xlsx) with pd.ExcelWriter(output_file, engineopenpyxl) as writer: result_df.to_excel(writer, sheet_nameoutput_sheet_name, indexFalse) print(f结果已保存到新文件: {output_file}) # 9. 打印前20个高频词供查看 print(\n前20个高频词预览:) for i, (word, count) in enumerate(sorted_words[:20], 1): print(f{i:3d}. {word:15s} : {count:5d}次) # 主程序 if __name__ __main__: path rC:\Users\jg2yXRZ\OneDrive\桌面\淘宝数据合并金珠 file_path os.path.join(path, 48只货币基金统计.xlsx) print(*50) print(使用标准版本从第二行开始统计) print(*50) extract_high_frequency_words(file_path, 高频词统计, top_n100) # 如果需要更精确地控制跳过的行数可以使用进阶版本 # print(\n *50) # print(使用进阶版本指定表头行) # print(*50) # extract_high_frequency_words_with_header(file_path, header_row0, output_sheet_name高频词统计, top_n100) # 如果文本已经是分词好的可以使用简化版本 # print(\n *50) # print(使用简化版本跳过第一行) # print(*50) # extract_high_frequency_words_simple(file_path, skip_rows1)没有第一行的日期但是第7行的利息收益统计的数字还是存在有干扰所以这几只需要增加本金但是现在收入也紧巴巴的所以考虑5050测试是否能稳定地每天生息1分。--------20260308------------新加了一天需要加本金的项目更多了------------20260309------------------------20260310------------今天给建信存了39元就是240元3月12日收益显示----------20260311------------