如何读取CSV文件并合并内容并计算出现比例?

如何读取CSV文件并合并内容并计算出现比例?

如何读取csv文件后合并内容

在读取csv文件后,可以通过以下步骤合并内容:

1. 获取主键列和待合并列
使用pd.read_csv()读取csv文件,并获取主键列(cmd)和待合并列(opt)。

2. 删除重复主键
使用set()和sorted()删除cmd列中的重复元素,得到不重复的主键列表。

3. 计算主键出现次数
使用counter()计算每个主键出现的次数,得到一个词频字典。

4. 初始化合并后的结果
创建一个文件来保存合并后的结果。

5. 遍历主键
对于每个主键,执行以下操作:

  • 获取该主键对应的opt列索引。
  • 创建一个新的列表来存储opt列中的值。
  • 遍历opt列索引,将值添加到新列表中。
  • 将新列表转换为字符串,再转换为列表。

6. 计算并输出每个opt的出现比例
遍历不重复的opt值,计算每个opt在该主键下出现的次数与主键出现次数的比值,并将其写入结果文件中。

示例代码:

import pandas as pd import os  data = pd.read_csv('test.csv') useRateF = 'test_new.csv'  index_list_cmd = sorted(set(list(data.cmd.values)), key=list(data.cmd.values).index) cntLst = [] for lst_i in range(len(index_list_cmd)):     cntLst.append(data.cmd.value_counts()[index_list_cmd[lst_i]])  if os.path.isfile(useRateF):     os.remove(useRateF)  for cmd_i in range(len(index_list_cmd)):     index_list_opt_idx = list(data.opt[data.cmd == index_list_cmd[cmd_i]].index.values)     index_list_opt = []      for opt_i in range(len(index_list_opt_idx)):         try:             index_list_opt.append(data.loc[int(index_list_opt_idx[opt_i]), 'opt'])         except:             print(index_list_cmd[cmd_i])             print(index_list_opt_idx[opt_i])             print(opt_i)      str_idxLstOpt = ' '.join(index_list_opt)     lst_idxLstOpt = str_idxLstOpt.split(' ')      for tag in sorted(set(lst_idxLstOpt), key=lst_idxLstOpt.index):         with open(useRateF, 'a', encoding='utf-8_sig') as uf:             uf.writelines(str(index_list_cmd[cmd_i]) + ',' + tag + ',' + str(lst_idxLstOpt.count(tag)/cntLst[cmd_i]))             uf.writelines('n')
登录后复制

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容