Pandas数据读取

Pandas数据读取

CSV文件

CSV文件是用逗号分隔值的数据形式,有时会被称为字符分隔值,因为分隔字符也可以不是逗号。CSV文件的一般文件扩展名为.csv,用制表符号分割的常用.tsv作为扩展名。CSV不仅可以是一个实体文件,还可以是字符形式。

CSV文件读取方法:

#文件目录
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不带数据样式,标准化较强,是最常见的数据格式。

Excel

Excel电子表格一般分为两类:

  1. 文字或的信息结构化,像排班表、工作日报、用户名单,以文字为主;
  2. 统计报表,如学生成绩表、销售表等以数字为核心;

Pandas主要处理的是统计报表,当然也是可以对文字信息类型表格做处理的,在目前的pandas版本中就加入了非常强大的文字处理功能。

用Excel进行数据分析有几个比较明显的缺点:

  • 无法进行复杂的处理:有时Excel提供的函数和处理方法无法满足复杂逻辑。
  • 无法支持更大的数据量:目前Excel支持的行数上限为1 048 576(2的20次方),列数上限为16 384(2的14次方,列标签为XFD),在数据分析、机器学习操作中往往会超过这个体量。
  • 处理方法无法复用:Excel一般采用设定格式的公式,然后将数据再复制,但这样仍然无法对数据的处理过程进行灵活复用。
  • 无法自动化:数据分析要经过一个数据输入、处理、分析和输出的过程,这些都是由人工来进行操作,无法实现自动化。

Pandas可以读取、处理大体量的数据,通过技术手段,理论上pandas可以处理的数据体量无限大。编程可以更加自由实现复杂逻辑,逻辑代码可以进行封装、重复使用并可实现自动化。

用Pandas对Excel读取操作:

#返回DataFrame
pd.read_excel('team.xlse') #默认读取第一个标签页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')

JSON

JSON是互联网上非常通用的轻量级数据交换格式,是HTTP中请求数据的标准格式之一。Pandas提供了JSON读取方法,可以在爬虫网络解析的时候极大地提高效率。

用Pandas对JSON读取操作:

#data.json为同目录下的一个文件
pd.read_json('data.json')

Pandas还可以解析一个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还提供了json_normalize(data)方法地区半结构化的JSON数据!!

HTML

pd.read_html()函数可以接受HTML字符串、HTML文件、URL,并将HTML中的

标签表格数据解析为DataFrame。如果有多个df的列表,可以通过索引取。如果页面只有一个表格,那么这个列表就只有一个DataFrame。这种方法也可以作为一个简单实用的爬虫功能。

dfs = pd.read_html('https://www.gairuo.com/p/pandas-io')
dfs[0] #查看第一个df
#读取网页文件,第一行为表头
dfs = pd.read_html('data.html',header=0)
#第一列为索引
dfs = pd.read_html(url,index_col=0)

如果网页表格很多,可以指定元素来获取:

# id = 'table'的表格,注意这里仍然可以返回多个
dfs1 = pd.read_html(url,attrs={'id','table'})
#dfs1[0]
#class='sortable'
dfs2 = pd.read_html(url,attrs={'class':'sortable'})

常用的参数与read_csv的基本相同

剪切板

剪切板时操作系统一个用来暂存数据的地方,它把数据都保留到内存中,可以在不同的软件之间传递。Pandas支持读取剪切板中的结构化数据,也就是我们 可以不用将数据保存成文件,可以直接从页面、Excel等文件中复制,然后直接从剪切板中读取。

#复制选中的文件,然后直接赋值
cdf = pd.read_clipboard()

变量cdf就是上述文本的DataFrame结构数据。使用参数与read_csv完全一样。

SQL

Pandas需要引入SQLAlchemy库来支持SQL,在SQLAlchemy的支持下可以实现所有常见数据类型的查询更新等操作。方法如下:

  • read_sql_read(table_name,con[, schema, ...]):把数据表力的数据转换成DataFrame
  • read_sql_query(sql,con[,index_col,...]):用sql查询数据到DataFrame中
  • read_sql(sql,con[,index_col,...]):同时支持上面两个功能
  • DataFrame.to_sql(self,name,con[,schema,...]):把记录数据写道数据库里。
#导入SQLAlchemy库
from sqlalchemy import create_engine
#创建数据库对象,SQLite内存模式
engine = create_engine('sqlite:///:memory:')
#取出表名为data的表数据
with engine.connect() as conn,conn.begin():
    data = pd.read_sql_table('data',conn)
    
#data
#将数据写入
data.to_sql('data',engine)
#大量写入
data.to_sql('data_chunked',engine,chunksize=1000)
#使用SQL查询
pd.read_sql_query('SELECT * FROM data',engine)

小结

Pandas支持读取非常多的数据格式,更多格式可以通过官网查询(https://pandas.pydata.org/docs/user_guide/io.html)。其中CSV和Excel是最常见的数据文件格式。

posted @ 2022-06-15 10:39  霜鱼CC  阅读(17)  评论(0)    收藏  举报