Pandas中的数据加载、存储和文件格式

本文详细介绍了Pandas中如何处理文本、二进制、HTML、XML、JSON等不同格式的数据。从读写CSV、逐块读取大文件,到处理JSON数据、XML和HTML解析,再到二进制数据如pickle和HDF5格式,以及数据库的读写,全方位展示了Pandas在数据读取和存储方面的强大功能。
摘要由CSDN通过智能技术生成

一、读写文本格式数据:

基本的文件读取:

pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,其中用的最多的就是read_csv()函数和read_table()函数,具体的如下表所示:

将数据文本转换为DataFrame时需要考虑的方面:

索引:当将一个或多个列当做返回的DataFrame处理时,是否要从文件、用户获取列名;

类型推断和数据转换:包括用户定义值的转换、缺失值标记列表等;

日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合成结果中的单个列;

迭代:支持对大文件进行逐块迭代;

不规整数据问题:跳过一些行、页脚、注释或其他一些不重要的东西;

 

通过read_csv()函数和read_table()函数的参数的设置,我们就可以完成以上的大部分功能,具体的参数设置如下图所示:

下面我们结合几个例子来看read_csv函数和read_table函数的用法:

例1:读取一个以逗号分隔的csv文本文件:read_csv()可以直接读取,read_table()要指定分隔符:

import pandas as pd
import numpy as np

df = pd.read_csv('ch06/ex1.csv')
df1 = pd.read_table('ch06/ex1.csv',sep=',')

 

例2:为DataFrame设置列名,通过read_csv()函数的name参数来设置自定义的列名;若将header参数设置为None,则会采用默认的列名:

首先我们先查看文本文件ex2.csv:

我们既可以让pandas为其默认分配列名,也可以自己定义列名:

df = pd.read_csv('ch06/ex2.csv',header=None)

df = pd.read_csv('ch06/ex2.csv',names=['a','b','c','d','message'])

 

例3:设置某一列或某几列作为DataFrame的索引,通过设置index_col参数可以完成这个操作:

names = ['a','b','c','d','message']
df = pd.read_csv('ch06/ex2.csv', names=names, index_col='message')

parsed = pd.read_csv('ch06/csv_mindex.csv', index_col=['key1','key2'])

例4:有些表格不是以固定的分割符去分割字段的,对于这种情况,需要编写一个正则表达式作为read_table的分隔符:

我们由这么一个文件,各个字段由数量不定的空白符分隔,具体如下图所示:

对于这个情况,我们可以使用正则表达式\s+表示,并且read_table()的sep参数设置为该正则表达式,于是我们就有:

result = pd.read_table('ch06/ex3.txt', sep='\s+')

 

例5:有时候在处理csv文件的时候,需要跳过某几行(跳过文件头),可以通过skiprows参数的设置来做到,在这个例子中我们跳过文件的第一行、第三行和第四行:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值