如果你在学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的速度绝对会让你惊艳到。

学习文档:https://csvkit.readthedocs.io/en/latest/index.html

END

各位伙伴们好,詹帅本帅搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)

推荐阅读

牛逼!Python常用数据类型的基本操作(长文系列第①篇)

牛逼!Python的判断、循环和各种表达式(长文系列第②篇)

牛逼!Python函数和文件操作(长文系列第③篇)

牛逼!Python错误、异常和模块(长文系列第④篇)

Python-csvkit:强大的CSV文件命令行工具相关推荐

  1. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  2. 使用python将数据写入csv文件,行与行间多出空行

    with open("C:/Users/abc/Desktop/data.csv",'w') as data_file:csvfile=csv.writer(data_file)c ...

  3. python命令行工具_python命令行工具Click快速掌握

    前言 写 Python 的经常要写一些命令行工具,虽然标准库提供有命令行解析工具 Argparse,但是写起来非常麻烦,我很少会使用它.命令行工具中用起来最爽的就是 Click,它是 Flask 的团 ...

  4. node工程默认url_node命令行工具之实现项目工程自动初始化的标准流程

    一.目的 传统的前端项目初始流程一般是这样: 可以看出,传统的初始化步骤,花费的时间并不少.而且,人工操作的情况下,总有改漏的情况出现.这个缺点有时很致命. 甚至有马大哈,没有更新项目仓库地址,导致提 ...

  5. 用python的pandas打开csv文件_使用CSV模块和Pandas在Python中读取和写入CSV文件

    什么是CSV文件? CSV文件是一种纯文本文件,其使用特定的结构来排列表格数据.CSV是一种紧凑,简单且通用的数据交换通用格式.许多在线服务允许其用户将网站中的表格数据导出到CSV文件中.CSV文件将 ...

  6. 用python的pandas打开csv文件_python读写数据读写csv文件(pandas用法)

    python中数据处理是比较方便的,经常用的就是读写文件,提取数据等,本博客主要介绍其中的一些用法.Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用 ...

  7. 懒人神器 !一个创意十足的 Python 命令行工具

    作者 | 写代码的明哥 来源 | Python编程时光 当听到某些人说 xx 库非常好用的时候,我们总是忍不住想要去亲自试试. 有一些库,之所以好用,是对一些库做了更高级的封闭,你装了这个库,就会附带 ...

  8. Python -- Scrapy 命令行工具(command line tools)

    结合scrapy 官方文档,进行学习,并整理了部分自己学习实践的内容 Scrapy是通过 scrapy 命令行工具进行控制的. 这里我们称之为 "Scrapy tool" 以用来和 ...

  9. python工具是什么-使用Python编写命令行工具有什么好的库?

    使用Python编写命令行工具的库很多,我最推荐的还是Google Fire Hello World 要介绍Fire是什么,看一个简单的例子就明白了 # calc.py import fire cla ...

最新文章

  1. python出现中文乱码 RuntimeWarning: Glyph 24180 missing from current font.解决方法
  2. db_files 不要设置的太大,否则影响内存的使用
  3. jwt token 过期刷新_如何在SpringBoot中集成JWT(JSON Web Token)鉴权
  4. 10 FI配置-财务会计-把会计年度变式分配给公司代码
  5. TCP协议特点和TCP报文段
  6. TortoiseSVN更改账号的方法
  7. 大型网站技术架构(读书笔记)
  8. 企业销售管理现状分析与解决思路(转)
  9. Bejson上线 在线png、jpg图片转svg功能
  10. 【Centos】查询命令
  11. 程序员所使用的各种软件分享及破解
  12. win10切换输入法快捷键_分享27个使用Win10的技巧,希望能助你提升Win10的使用效率。...
  13. 好看的登陆界面java_简单又美观的登录界面
  14. comp3311辅导 assignment1
  15. 数据可视化——R语言ggplot2包绘制相关矩阵为热图
  16. Android自定义View之Canvas绘制基本图形(二)-- 自定义时钟
  17. VMWare 14虚拟机下载和安装说明兼容WIN10
  18. CVE-2020-1938 Tomcat AJP漏洞复现
  19. python--千库网素材爬取
  20. XBG和LGB和CATBOOST 要用哪一种? 深度分析

热门文章

  1. 阿里开源Canal--①简介
  2. 能分清直方图和柱状图,你就是图表届的“头号”玩家|图表家族#36
  3. 人工智能、机器学习和深度学习的区别?
  4. 最全的数据结构解析与归纳
  5. Redis内部数据结构详解之简单动态字符串(sds)
  6. php7与php 5.5 运行效率比较(实测篇)
  7. PHPstudy新版小P面板进行设置版本
  8. BCrypt加密怎么存入数据库_第6天 密码加密与微服务鉴权JWT(下)
  9. java session持久化_Session的生命周期和持久化
  10. 微信支付退款回调处理 php