利用awk分析data.csv中label列各取值的分佈. 在終端執行head data.csv查看數據: 因為行內包含換行符的項會被分成多行(例如上面的第3,4行),所以需要結合正則匹配 -F ',' 表示根據逗號分隔; $(NF-1)~/^[A-Z][0-9]/ 表示分隔後的倒數第二項(在此指取 ...
利用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()方法統計序列所有元素出現次數,併進行倒序.