如何读取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')
以上就是如何读取CSV文件并合并内容并计算出现比例?的详细内容,更多请关注知识资源分享宝库其它相关文章!