写点什么

数据分析从零开始实战,Pandas 读写 TSV/Json 数据

作者:老表
  • 2021 年 11 月 26 日
  • 本文字数:2464 字

    阅读完需:约 8 分钟

数据分析从零开始实战,Pandas读写TSV/Json数据

这是我参与 11 月更文挑战的第 17 天。

一、写在前面

本系列学习笔记参考书籍:  《数据分析实战》托马兹·卓巴斯,会将自己学习本书的笔记分享给大家,同样开成一个系列『数据分析从零开始实战』。


上一篇文章中带大家了解了数据分析基础,配置好了数据分析的基本环境,以及利用pandas模块读写 csv 文件,在本文开头,我也补充了 csv 与 tsv 的基本介绍与区别,意在更好的让大家理解相关知识点,本文将带大家继续学习文件读取。


点击查看第一篇文章:# 数据分析从零开始实战,Pandas读写CSV数据

二、上节补充

CSV

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。

TSV

TSV 是 Tab-separated values 的缩写,即制表符分隔值。Python 的 csv 模块准确的讲应该叫做 dsv 模块,因为它实际上是支持范式的分隔符分隔值文件(DSV,delimiter-separated values)的。

delimiter参数值默认为半角逗号,即默认将被处理文件视为CSV。当`delimiter='\t'`时,被处理文件就是TSV。复制代码
复制代码

三、基本知识概要

1.利用 pandas 读写 tsv 文件

2.利用 pandas 读写 json 文件

四、开始动手动脑

1.利用 pandas 读写 tsv 文件

在文章开头我已经说明了 csv 与 tsv 的差别,相信部分看过第一篇文章的读者应该知道怎么处理 tsv 文件了。

csv 与 tsv 只是内容的分隔符不一样,前者是,,后者是\t,python 读取这两类文件都使用csv模块,也可以直接利用pandas,这里我们讲利用 pandas 读取方式,使用的函数read_csv()to_csv()在上一篇 文章中有详细介绍,这里我直接上案例代码。

(1) 读取 tsv 文件代码

import pandas as pdimport os
# 获取当前文件父目录路径father_path = os.getcwd()
# 原始数据文件路径rpath_tsv = father_path+r'\data01\city_station.tsv'# 读取数据tsv_read = pd.read_csv(rpath_tsv, sep="\t")# 显示数据前10条print(tsv_read.head(10))复制代码
复制代码

运行结果

    站点名 代号0  北京北 VAP1  北京东 BOP2  北京  BJP3  北京南 VNP4  北京西 BXP复制代码
复制代码

(2) 写 tsv 文件代码

import pandas as pdimport os
# 获取当前文件父目录路径father_path = os.getcwd()
# 保存数据文件路径path_tsv = father_path+r'\data01\temp_city.tsv'
data = {"站点名": ["北京北", "北京东", "北京", "北京南", "北京西"], "代号": ["VAP", "BOP", "BJP", "VNP", "BXP"]}df = pd.DataFrame(data)df.to_csv(path_tsv, sep="\t", index=False)复制代码
复制代码

运行结果



(3)号外加餐

利用 csv 模块也可以直接读取 csv 和 tsv 文件

csv.reader(csvfile, dialect='excel', **fmtparams)csv.writer(csvfile, dialect='excel', **fmtparams)复制代码
复制代码
  • csvfile,必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象,如果是文件对象,打开时需要加"b"标志参数。

  • qdialect,编码风格,默认为 excel 的风格,也就是用逗号(,)分隔,dialect 方式也支持自定义

  • fmtparam,格式化参数,用来覆盖之前 dialect 对象指定的编码风格。

2.利用 pandas 读写 json 文件

(1)利用 pandas 读取 json 文件

import pandas as pdimport os
# 获取当前文件父目录路径father_path = os.getcwd()# 原始数据文件路径rpath_json = father_path+r'\data01\realEstate_trans.json'json_read = pd.read_json(rpath_json)
# 输出头10行记录print(json_read.head(10))复制代码
复制代码

运行结果



函数解析

read_json(path_or_buf,orient,encoding,numpy)

常见参数解析:

  • path_or_buf:字符串,表示文件路径;

  • orient:指示预期的 JSON 字符串格式。可以 to_json()使用相应的方向值生成兼容的 JSON 字符串。一组可能的方向是:

'split' : dict like {index -> [index], columns -> [columns], data -> [values]}'records' : list like [{column -> value}, ... , {column -> value}]'index' : dict like {index -> {column -> value}}'columns' : dict like {column -> {index -> value}}'values' : just the values array复制代码
复制代码
  • encoding:字符串,默认为'utf-8';

  • numpy:布尔值,默认为 False,直接解码为 numpy 数组。仅支持数字数据,但支持非数字列和索引标签。另请注意,如果 numpy = True,则每个术语的 JSON 顺序必须相同。

(2)利用 pandas 写入 json 文件

import pandas as pdimport os
# 获取当前文件父目录路径father_path = os.getcwd()# 存储数据文件路径wpath_json = father_path+r'\data01\temp_trans.json'data = [{"city": "SACRAMENTO", "longitude": -121.434879, "street": "3526 HIGH ST", "sq__ft": 836, "latitude": 38.631913, "sale_date": "Wed May 21 00:00:00 EDT 2008", "zip": 95838, "beds": 2, "type": "Residential", "state": "CA", "baths": 1, "price": 59222}, {"city": "SACRAMENTO", "longitude": -121.431028, "street": "51 OMAHA CT", "sq__ft": 1167, "latitude": 38.478902, "sale_date": "Wed May 21 00:00:00 EDT 2008", "zip": 95823, "beds": 3, "type": "Residential", "state": "CA", "baths": 1, "price": 68212}, {"city": "SACRAMENTO", "longitude": -121.443839, "street": "2796 BRANCH ST", "sq__ft": 796, "latitude": 38.618305, "sale_date": "Wed May 21 00:00:00 EDT 2008", "zip": 95815, "beds": 2, "type": "Residential", "state": "CA", "baths": 1, "price": 68880}]df = pd.DataFrame(data)df.to_json(wpath_json)复制代码
复制代码

运行结果



函数解析

to_json(path_or_buf,orient,encoding,index)

  • 前三个参数和 read_json()里的一样

  • index:False 则选择不写入索引,默认为 True。


【注】利用 json 模版的 loads()与 dumps()方法也可以实现 json 文件的读写。

五、送你的话

我始终觉得,要想学好一门语言,底层是最主要的,所以不要觉得入门的这些基本东西太简单,学好基础,才能成大牛


坚持 and 努力 : 终有所获。

思想很复杂,

实现很有趣,

只要不放弃,

终有成名日。

—《老表打油诗》


下期见,我是爱猫爱技术的老表,如果觉得本文对你学习有所帮助,欢迎点赞、评论、关注我!

发布于: 2021 年 11 月 26 日阅读数: 15
用户头像

老表

关注

公众号|简说Python 2018.09.23 加入

【公众号:简说Python】爱猫爱技术,Python终身学习者、数据分析爱好者、Go语言内卷机。

评论

发布
暂无评论
数据分析从零开始实战,Pandas读写TSV/Json数据