手把手教你用Pandas读取所有主流数据存储
导读:从常见的Excel和CSV到JSON及各种数据库,Pandas几乎支持市面上所有的主流数据存储形式。
作者:李庆辉
来源:大数据DT(ID:hzdashuju)
Pandas提供了一组顶层的I/O API,如pandas.read_csv()等方法,这些方法可以将众多格式的数据读取到DataFrame数据结构中,经过分析处理后,再通过类似DataFrame.to_csv()的方法导出数据。
表3-1列出了一些常见的数据格式读取和输出方法。
▼表3-1 Pandas中常见数据的读取和输出函数
输入和输出的方法如下:
读取函数一般会赋值给一个变量df,df = pd.read_
CSV(Comma-Separated Values)是用逗号分隔值的数据形式,有时也称为字符分隔值,因为分隔字符也可以不是逗号。CSV文件的一般文件扩展名为.csv,用制表符号分隔也常用.tsv作为扩展名。CSV不仅可以是一个实体文件,还可以是字符形式,以便于在网络上传输。
CSV文件的读取方法如下(以下代码省略了赋值操作):
代码语言:javascript复制# 文件目录
pd.read_csv('data.csv') # 如果文件与代码文件在同一目录下
pd.read_csv('data/my/data.csv') # 指定目录
pd.read_csv('data/my/my.data') # CSV文件的扩展名不一定是.csv
CSV文件可以存储在网络上,通过URL来访问和读取:
# 使用URL
pd.read_csv('https://www.gairuo.com/file/data/dataset/GDP-China.csv')CSV不带数据样式,标准化较强,是最为常见的数据格式。Pandas为读取CSV数据提供了强大的功能,了解更多详细操作请阅读《史上最全!用Pandas读取CSV,看这篇就够了》。
02 Excel
Excel电子表格是微软公司开发的被广泛使用的电子数据表格软件,一般可以将它的使用分为两类。一类是文字或者信息的结构化,像排班表、工作日报、客户名单之类,以文字为主;另一类为统计报表,如学生成绩表、销售表等,以数字为核心。
Pandas主要处理统计报表,当然也可以对文字信息类表格做整理,在新版本的Pandas中加入了非常强大的文本处理功能。
Excel虽然易于上手,功能也很强大,但在数据分析中缺点也很明显。
无法进行复杂的处理:有时Excel提供的函数和处理方法无法满足复杂逻辑。无法支持更大的数据量:目前Excel支持的行数上限为1 048 576(2的20次方),列数上限为16 384(2的14次方,列标签为XFD),在数据分析、机器学习操作中往往会超过这个体量。处理方法无法复用:Excel一般采用设定格式的公式,然后将数据再复制,但这样仍然无法对数据的处理过程进行灵活复用。无法自动化:数据分析要经过一个数据输入、处理、分析和输出的过程,这些都是由人工来进行操作,无法实现自动化。Pandas可以读取、处理大体量的数据,通过技术手段,理论上Pandas可以处理的数据体量无限大。编程可以更加自由地实现复杂的逻辑,逻辑代码可以进行封装、重复使用并可实现自动化。
Pandas也提供了非常丰富的读取操作,这些在《手把手教你用Python读取Excel》有详细介绍。最基础的读取方法如下:
代码语言:javascript复制# 返回DataFrame
pd.read_excel('team.xlsx') # 默认读取第一个标签页Sheet
pd.read_excel('path_to_file.xlsx', sheet_name='Sheet1') # 指定Sheet
# 从URL读取
pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')03 JSON
JSON是互联网上非常通用的轻量级数据交换格式,是HTTP请求中数据的标准格式之一。Pandas提供的JSON读取方法在解析网络爬虫数据时,可以极大地提高效率。可如下读取JSON文件:
代码语言:javascript复制# data.json为同目录下的一个文件
pd.read_json('data.json')
可以解析一个JSON字符串,以下是从HTTP服务检测到的设备信息:
jdata='{"res":{"model":"iPhone","browser":"Safari","version":"604.1"},"status":200}'
pd.read_json(jdata)
'''
res status
browser Safari 200
model iPhone 200
version 604.1 200
'''Pandas还提供了pd.json_normalize(data)方法来读取半结构化的JSON数据。
04 HTML
pd.read_html()函数可以接受HTML字符串、HTML文件、URL,并将HTML中的