您的位置:首页 > 编程语言 > Python开发

python读取json格式文件和用pandas读取excel文件

2018-09-30 21:34 1036 查看

IT Xiao Ang Zai 9月30号

版本:python3.7

编程软件:sublime

 

一:python解析json数据

1.什么是json:

(1)JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON在python中分别由list和dict组成。

(2)作用:主要用于字符串和python数据类型间进行转换。

(3)Json模块提供了四个功能:dumps、dump、loads、load

json dumps把数据类型转换成字符串 dump把数据类型转换成字符串并存储在文件中  loads把字符串转换成数据类型  load把文件打开从字符串转换成数据类型。

(4)优点:是可以在不同语言之间交换数据的。

    缺点:json只能序列化最基本的数据类型。

 

2.python对json数据的基本操作:

   python的json模块提供了一种简单的方式来编码和解码JSON数据。其中两个主要的函数是json.dumps()和json.loads()。json.dumps()函数是将一个python数据结构转换为JSON编码的字符串,json.loads()函数是将一个JSON编码的字符串转换回一个python数据结构。但如果你要处理的是文件,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据:

[code]import json

data = {'name':'IT Xiao Ang Zai','number':100,'age':19.5}
jsonStr = json.dumps(data)  #python数据结构(一般为字典)转换为JSON编码的字符串
print(jsonStr)
print(type(json))
data2 = json.loads(jsonStr) #将一个JSON编码的字符串转换回一个python数据结构
print(data2)
print(type(data2))
#我们现在试着写入json类型数据
with open("my_data.json",'w') as f:
json.dump(data2,f)

#我们现在进行读入json类型数据
with open("my_data.json",'r') as g:
result_data = json.load(g)
print(result_data)

结果如下:

我们发现,当转换为一个json字符串的时候,它的类型为module,其实是一个字符串。而且我们要对文件进行操作的话,需要用到不加s的两个函数进行编码和解码json数据的操作。

其实只要把返回的json格式嵌套弄清楚,json还是比较简单的,其实之前网络爬虫中就介绍过json解析数据了。

3.注意事项

在读取文件时,要设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错:

会出现错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 32: illegal multibyte sequence

此时需要设置encoding参数,以utf-8编码模式读取文件:

[code]import json

with open("E:\\result.json","r",encoding="utf-8") as f:
data = json.load(f)
print(data)

我们可以看到结果:

现在就读取正常了。

 

 

二:pandas模块读取excel文件

1.pandx简介:pandas是基于NumPy的为了解决数据分析任务而创建的工具。pandas模块提供了高效地操作大型数据集所需的工具,对于大批量的数据分析是很方便的。

 

2.读取excel文件

(1) 读取文件通过read_excel函数实现,除了pandas还需要安装第三方库xlrd。

[code]read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, names=None, parse_cols=None, parse_dates=False, date_parser=None, na_values=None, thousands=None, convert_float=True, has_index_names=None, converters=None, dtype=None, true_values=None, false_values=None, engine=None, squeeze=False, **kwds)

(2) 主要参数

io:excel文件,可以是文件路径、文件网址、file-like对象、xlrd workbook

sheetname:返回指定的sheet,参数可以是字符串(sheet名)、整型(sheet索引)、list(元素为字符串和整型,返回字典{'key':'sheet'})、none(返回字典,全部sheet)

header:指定数据表的表头,参数可以是int、list of ints,即为索引行数为表头; names:返回指定name的列,参数为array-like对象。

encoding:关键字参数,指定以何种编码读取

注:该函数返回pandas中的DataFrame或dict of DataFrame对象,利用DataFrame的相关操作即可读取相应的数据。

 

3.写入文件

(1) 写入文件通过pandas构造DataFrame,调用to_excel方法实现。

[code]DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)

(2) 主要参数

excel_writer:写入的目标excel文件,可以是文件路径、ExcelWriter对象

sheet_name:被写入的sheet名称,string类型,默认为'sheet1'; na_rep:缺失值表示,string类型

header:是否写表头信息,布尔或list of string类型,默认为True

index:是否写行号,布尔类型,默认为True

encoding:指定写入编码,string类型

 

在下一篇文章中会向大家介绍一些实际操作,请大家及时关注,欢迎评论与交流。

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: