![61dc28d723363dfa21d3cacca234a772.png](https://i-blog.csdnimg.cn/blog_migrate/0397209e41041c65c5504978b4b2c6ab.jpeg)
生物信息软件通常会生成一个表格格式的结果,例如blast比对的m8格式,各种gff,gtf,bed,bam,vcf等文件,都是标准类型的结构化数据,经常需要对这些表格进行各种处理,包括截取固定的行,列,根据某一列值进行过滤,或者排序,筛选,合并,拆封等等操作,这些都是Excel的日常操作,但是当数据太大时,利用Excel有些吃力,那么就可以使用一些工具来进行处理,这里我们推荐大家一款csvkit工具,专门用于处理CSV格式的结果。
不会编程,如何快速截取序列
不会编程,如何进行批量操作
不会编程,如何快速提取序列
CSV格式
CSV是Comma-Separated Values,的简称,是数据分析中常用的一种格式,与之类似的是一种TSV格式(Tab-Separated Values)。因为当一些值之间有空格的时候,不适合使用tab进行分割,那么就采用逗号分割。Excel可以直接打开CSV格式的结果,如果使用纯文本工具打开,则可以看到很多逗号分割符。
state,county,fips,nsn,item_name,quantity,ui,acquisition_cost,total_cost,ship_date,federal_supply_category,federal_supply_category_name,federal_supply_class,federal_supply_class_name
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
NE,ADAMS,31001.0,1005-00-589-1271,"RIFLE,7.62 MILLIMETER",1.0,Each,138.0,138.0,2008-07-11,10.0,WEAPONS,1005.0,"Guns, through 30 mm"
csvkit
csvkit顾名思义,是专门用来处理CSV格式结果的工具包,里面包含了很多相关的工具。
- in2csv
- sql2csv
- csvclean
- csvcut
- csvgrep
- csvjoin
- csvsort
- csvstack
- csvformat
- csvjson
- csvlook
- csvpy
- csvsql
- csvstat
下载安装
链接地址:https://csvkit.readthedocs.io/en/1.0.3/
软件的安装比较容易,csvkit是一个python工具,直接使用pip即可在线安装。
sudo pip install csvkit
csvkit软件一个不太友好的地方是,这些工具都是单独存在的,而不像bwa或者samtools这种,将所有工具集合在一个软件菜单中。
案例介绍
软件说明链接:https://csvkit.readthedocs.io/en/1.0.3/tutorial/1_getting_started.html#getting-the-data
下载测试数据
curl -L -O https://raw.githubusercontent.com/wireservice/csvkit/master/examples/realdata/ne_1033_data.xlsx
1 in2csv将Excel转换为CSV
默认Excel采用xlsx格式,是二进制文件,需要转换为csv格式的文本文件才可以使用csvkit工具。
in2csv ne_1033_data.xlsx > data.csv
2 csvlook查看文件
csvlook会用一种很友好的方式显示文件,而不是逗号分割。
$ csvlook data.csv | less -S
| state | county | fips | nsn | item_name
| ----- | ---------- | ------ | ---------------- | ----------------------------------------------
| NE | ADAMS | 31,001 | 1005-00-589-1271 | RIFLE,7.62 MILLIMETER
| NE | ADAMS | 31,001 | 1005-00-589-1271 | RIFLE,7.62 MILLIMETER
3 csvcut数据切割
输出行号
$ csvcut -n data.csv
1: state
2: county
3: fips
4: nsn
5: item_name
6: quantity
7: ui
8: acquisition_cost
9: total_cost
10: ship_date
11: federal_supply_category
12: federal_supply_category_name
13: federal_supply_class
14: federal_supply_class_name
输出固定的列,类似于Linux cut -f或者awk的功能
$ csvcut -c 2,5,6 data.csv |head
county,item_name,quantity
ADAMS,"RIFLE,7.62 MILLIMETER",1.0
ADAMS,"RIFLE,7.62 MILLIMETER",1.0
ADAMS,"RIFLE,7.62 MILLIMETER",1.0
ADAMS,"RIFLE,7.62 MILLIMETER",1.0
ADAMS,"RIFLE,7.62 MILLIMETER",1.0
根据名字进行输出固定的列,类似于R语言的数据框$符索引
csvcut -c county,item_name,quantity data.csv
4 csvstat数据统计
csvcut -c county,acquisition_cost,ship_date data.csv | csvstat
5 数据筛选
csvcut -c county,item_name,total_cost data.csv | csvgrep -c county -m LANCASTER | csvlook
6 数据排序
csvcut -c county,item_name,total_cost data.csv | csvgrep -c county -m LANCASTER | csvsort -c total_cost -r | csvlook
除此之外,csvkit工具包中,还包括csvjoin,csvstack,csvsql等工具,可以实现数据合并,Excel数据透视表等功能,更多技巧可以查看软件帮助文档。购买服务器账号的用户将测试数据拷贝至个人目录下练习。
cp -R /ifs1/Example/66.csvkit/ $HOME