网站首页 > java教程 正文
如果你在学Python数据处理,一定对CSV文件不陌生。日常本地数据存储中,除了Excel文件外,大部分数据都是以CSV文件格式保存的。
CSV(Comma-Separated Values)是一种文本文件,也叫作逗号分隔值文件格式。顾名思义,它就是用来保存纯文本,被分隔符分隔为多个字段。
CSV文件能够被Excel、notepad++、Java、Python等各种软件读取,非常方便。
因为它结构简单、易传输、易读取的特性,使其广受个人和商业领域欢迎。
在Python中,可以使用read函数、pandas库、csv库等读写CSV文件,而且这些也是常用的方法。
这次给大家介绍一个非常强大的第三方库-csvkit,它是专门处理CSV文件的命令行工具,可以实现文件互转、数据处理、数据统计等,十分便捷。
因为csvkit是Python第三方库,我们直接使用pip来安装csvkit。
pip install csvkit
csvkit是命令行工具,所以代码都在命令行执行,下面列举一些常见的使用场景。
我们先在本地保存一个Excel表(DoubanMovie),其内容是豆瓣电影数据。
注意命令行地址要切换到该表所在位置。
比如我放在E:\csvkit_tutorial\里面,可以用下面命令来切换。
E:
cd csvkit_tutorial
1、Excel转CSV
csvkit支持将Excel等其他数据文件转化为CSV文件,使用in2csv命令实现。
in2csv DoubanMovie.xlsx > DoubanMovie.csv
除了Excel的xlsx和xls文件外,你还可以对下面多种数据格式进行CSV的转换
包括:dbf , fixed , geojson , json , ndjson
2、对SQL数据库进行读写和查询操作
从MySQL数据库中读取一张表存到本地CSV文件中,使用csvsql命令实现。
csvsql --db "mysql://user:pass@host/database?charset=utf8" --tables "test1" --insert test1.csv
直接对MySQL数据库进行数据查询,使用sql2csv命令实现
sql2csv --db "mysql://user:pass@host/database?charset=utf8" --query "select * from test2"
注意代码中--db参数后面需要输入数据库的信息,用于连接数据库。
3、将CSV文件转换为Json格式
除了将Json文件转化为CSV格式外,csvkit也支持将CSV文件转化为Json格式,使用csvjson命令实现。
csvjson test.csv
如果你是做地理空间分析,还可以将csv文件转化为GeoJson格式。
4、数据处理和分析
csvkit中还有用于数据处理分析的命令,如下:
- csvcut:对数据进行索引切片
- csvgrep:对数据进行过滤,可按照正则表达式规则
- csvjoin:对不同数据表按键进行连接
- csvsort:对数据进行排序
- csvstack:将多个数据表进行合并
- csvlook:以 Markdown 兼容的固定宽度格式将 CSV 呈现到命令行
- csvstat:对数据进行简单的统计分析
小结
csvkit适合那些经常处理CSV文件的小伙伴,可快速的进行转化、清晰、分析等任务。特别当你的文件较大,一般软件难以打开时,csvkit的速度绝对会让你惊艳到。
猜你喜欢
- 2024-11-24 给R语言读取Excel表的能力
- 2024-11-24 jmeter 不务正业,干起了可变接口、动态参数自动化测试
- 2024-11-24 java开发工具IntelliJ IDEA全新版本V2022.2正式发布(二)
- 2024-11-24 把JSON/CSV文件打造成MySQL数据库
- 2024-11-24 (Python基础教程之四)Python中的变量的使用
- 2024-11-24 应大家需要,Java常用开发工具汇总来了
- 2024-11-24 MySQL实战 | MySQL逻辑架构—一条查询SQL是如何执行的
- 2024-11-24 Oracle查询语句,你知道几个?(下)
- 2024-11-24 (Python基础教程之十九)Python优先级队列示例
- 2024-11-24 读 CSV/TXT 的报表怎么做分页查询?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)