您的位置 首页 知识分享

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

如何读取后合并内容 在读取csv文件后,可以通过以下步骤合并内容: 1. 获取主键列和待合并列使用pd.rea…

如何读取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')
登录后复制

以上就是如何读取CSV文件并合并内容并计算出现比例?的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表甲倪知识立场,转载请注明出处:http://www.spjiani.cn/wp/4104.html

作者: nijia

发表评论

您的电子邮箱地址不会被公开。

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部