• awk结合正则匹配


    利用awk分析data.csv中label列各取值的分布.

    在终端执行head data.csv查看数据:

    1 name,business,label,label_name
    2 沧州光松房屋拆迁有限公司,旧房拆迁、改造;物业服务(依法须经批准的项目,经相关部门批准后方可开展经营活动),E4,建筑装饰和其他建筑业
    3 上海托帕化工材料有限公司,"从事化工材料领域内的技术开发、技术转让、技术咨询、技术服务、化工原材料及产品(除危险化学品、监控化学品、烟花爆竹、易制毒化学品、民用爆炸物品)、机械设备、电子产品、橡塑制品、机电设备、五金建材、日用百货的销售,从事货物及技术的进出口业务。
    4 【依法须经批准的项目,经相关部门批准后方可开展经营活动】",F2,零售业
    5 上海利昂节能灯具有限公司,节能灯管,节能灯配件,电子镇流器,灯具,电子产品,生产,加工,C26,电气机械和器材制造业
    6 裕福支付有限公司海南分公司,"企业管理咨询,计算机数据处理,应用软件技术服务,会议服务,经济信息咨询",L2,商务服务业
    7 龙川县联生农贸市场管理中心,自建农贸市场管理服务,L2,商务服务业

    因为行内包含换行符的项会被分成多行(例如上面的第3,4行),所以需要结合正则匹配

    cat data.csv | awk -F ',' '{if(NF>2 && $(NF-1)~/^[A-Z][0-9]/) {print $(NF-1)}}' | sort | uniq -c | sort -n -r > label_distribution.txt

    -F ',' 表示根据逗号分隔;

    $(NF-1)~/^[A-Z][0-9]/ 表示分隔后的倒数第二项(在此指取label列的值)需满足指定的正则匹配规则

    另外,利用Pandas库对csv格式的文件做统计也很方便.

    用pandas读取数据:

    print df.label.value_counts()
    """
    F1     622844
    L2     614734
    F2     493420
    A1     102186
    ...
    """

    value_counts()方法统计序列所有元素出现次数,并进行倒序.

  • 相关阅读:
    pyinstaller 打包后无法运行
    Android Uiautomator2 gradlew 坑
    JNDI 在 J2EE 中的角色
    23种设计模式
    Struts2工作原理
    SpringMVC工作原理
    堆内存设置
    安装和使用 memcached
    SQL面试题及答案
    30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
  • 原文地址:https://www.cnblogs.com/bymo/p/7246353.html
Copyright © 2020-2023  润新知