关于#数据统计#的问题,如何解决?

我有多个txt文本例如1.txt 如何用代码统计
我需要统计每个文本中数字出现的频数,并生成excel表格形式
文本形式如下:

img

需要统计每个数字出现的频数,如何用python写

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/1090634
  • 这篇博客也不错, 你可以看下C语言:如何实现在txt文件中删除超链接、统计单词数量、生成单词列表 (文本流操作并解决乱码)
  • 除此之外, 这篇博客: 基于哈夫曼编码对txt文档实现压缩处理 | 算法分析之贪心算法设计 C语言版中的 一、实验内容与要求 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 内容:哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法。其压缩率通常在20%~90%之间。哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式。
    给出现频率高的字符较短的编码,出现频率较低的字符以较长的编码,可以大大缩短总码长。哈夫曼提出构造最优前缀码的贪心算法,由此产生的编码方案称为哈夫曼编码。哈夫曼算法以自底向上的方式构造表示最优前缀码的二叉树T。此算法以|c|个叶结点开始,执行|c|-1次的“合并”运算后产生最终所要求的树T。
    要求:随机输入超过10字符及其频度,求出其这些字符的哈夫曼编码。 

  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中的代码和问题描述,可以看出需要实现一个按照指定列排序的功能。首先我们需要读取输入的学生纪录,然后根据指定列进行排序,最后输出排序后的结果。

    具体的解决方案如下:

    1. 首先,引入头文件iostream、string、vector、algorithm,提供所需的基本功能。代码中使用了命名空间std,所以不需要在代码中添加std::来指明使用的是标准库的函数。
    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    
    1. 定义一个结构体Student,用来存储学生的学号、姓名和成绩信息。
    struct Student
    {
        string id;
        string name;
        int grade;
    };
    
    1. 在主函数main中,首先读取输入的学生纪录个数n和指定排序的列号c。
    int n, c;
    cin >> n >> c;
    
    1. 创建一个vector容器students,用来存储学生的纪录。
    vector<Student> students(n);
    
    1. 通过循环,逐个读取学生的学号、姓名和成绩,并存入students中。
    for (auto& it : students)
        cin >> it.id >> it.name >> it.grade;
    
    1. 根据问题描述中的排序规则,使用sort函数对学生纪录进行排序。根据指定的列号c,分别编写不同的lambda表达式作为sort函数的第三个参数。在lambda表达式中,根据列号c来确定按照哪一列进行排序。

    2. 当c=1时,按学号递增排序。

    sort(students.begin(), students.end(),
        [](Student& a, Student& b) {
            return a.id < b.id;
        });
    
    • 当c=2时,按姓名的非递减字典序排序。在比较姓名时,先判断姓名是否相同,如果不同则按字典序排序,如果相同则按学号递增排序。
    sort(students.begin(), students.end(),
        [](Student& a, Student& b) {
            return a.name != b.name ? a.name < b.name : a.id < b.id;
        });
    
    • 当c=3时,按成绩的非递减排序。在比较成绩时,先判断成绩是否相同,如果不同则按非递减排序,如果相同则按学号递增排序。
    sort(students.begin(), students.end(),
        [](Student& a, Student& b) {
            return a.grade != b.grade ? a.grade < b.grade : a.id < b.id;
        });
    
    1. 最后,通过循环遍历students,输出排序后的学生纪录。
    for (auto& it : students)
        cout << it.id << " " << it.name << " " << it.grade << endl;
    

    以上就是按照问题要求的具体解决方案。通过以上代码,可以实现按照指定列排序的功能,并输出排序后的结果。请自行在本地编译运行代码,以获得更好的体验。如果有任何问题,请随时在提问。

看不懂你到底要统计啥,110是啥,2又是啥