利用awk分析data.csv中label列各取值的分布.spa
在终端执行head data.csv查看数据:code
1 name,business,label,label_name 2 沧州光松房屋拆迁有限公司,旧房拆迁、改造;物业服务(依法须经批准的项目,经相关部门批准后方可开展经营活动),E4,建筑装饰和其余建筑业 3 上海托帕化工材料有限公司,"从事化工材料领域内的技术开发、技术转让、技术咨询、技术服务、化工原材料及产品(除危险化学品、监控化学品、烟花爆竹、易制毒化学品、民用爆炸物品)、机械设备、电子产品、橡塑制品、机电设备、五金建材、日用百货的销售,从事货物及技术的进出口业务。 4 【依法须经批准的项目,经相关部门批准后方可开展经营活动】",F2,零售业 5 上海利昂节能灯具备限公司,节能灯管,节能灯配件,电子镇流器,灯具,电子产品,生产,加工,C26,电气机械和器材制造业 6 裕福支付有限公司海南分公司,"企业管理咨询,计算机数据处理,应用软件技术服务,会议服务,经济信息咨询",L2,商务服务业 7 龙川县联生农贸市场管理中心,自建农贸市场管理服务,L2,商务服务业
由于行内包含换行符的项会被分红多行(例如上面的第3,4行),因此须要结合正则匹配blog
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
另外,利用Pandas库对csv格式的文件作统计也很方便.产品
用pandas读取数据:io
print df.label.value_counts() """ F1 622844 L2 614734 F2 493420 A1 102186 ... """
value_counts()方法统计序列全部元素出现次数,并进行倒序.class