



















pandas IO操作主要是读取有特定格式的文件,主要是EXCEL,CSV,JSON,数据库等文件。
1、CSV文件的读写:pd.read_csv()
CSV文件一般是一行一行的,数据之间是通过逗号分隔的。
import pandas as pd city = pd.read_csv("city.csv") print(city) # 输出 lucy 19 北京 0 merry 20 上海 1 tom 22 广州 print(type(city)) # 实质上就是一个DataFrame
pd.read_csv()方法有个参数sep,因为CSV文件默认就是逗号分隔,所以这个参数默认值就是逗号。
同时,观察city对象的打印输出,lucy,19,北京这一行变成了列标签;行标签使用了0、1默认值,如下:
print(city.columns) # 输出 Index(['lucy', '19', '北京'], dtype='object') print(city.index) # 输出 RangeIndex(start=0, stop=2, step=1)
上面的标签明显不合逻辑:首先是行标签方面,把lucy的信息作为了行标签,这是因为在读取时候默认是读取第一行作为列标签;其次列标签方面更合理的是把第一列信息(即名字信息)作为行标签,使用了0,1作为行标签的原因也是因为没有设置对应参数。
pd.read_csv()方法中header是用来设置列标签的,index_col是用来设置把文件中那一列信息设置为行标签的。
如果header=None,则默认列标签会使用序号标签,如果要设置自定义行标签则可以使用names参数;index_col=0则是指把第0行设置为行标签信息,如下:
city = pd.read_csv("city.csv",header=None,index_col=0) print(city) # 输出 1 2 0 lucy 19 北京 merry 20 上海 tom 22 广州 print(city.columns) # 输出 Index([1, 2], dtype='int64') print(city.index) # 输出 Index(['lucy', 'merry', 'tom'], dtype='object', name=0)
pd.read_csv()同样可以读取文本文件,只是需要针对其中分隔符作出特殊设定。
2、Excel文件的读写:pd.read_excel()
exc = pd.read_excel("excel1.xlsx") print(exc)
read_excel()方法与read_csv()方法总体比较相似:
exc = pd.read_excel("excel1.xlsx",index_col=0) print(exc) print(exc.shape)
如上,不设置参数的话,对于多sheet的excel文件只会读到第一个sheet,可以通过sheet_name参数设置读取的sheet表内容:
exc = pd.read_excel("excel1.xlsx",index_col=0,sheet_name="员工信息") print(exc) exc = pd.read_excel("excel1.xlsx",index_col=0,sheet_name=0) print(exc) exc = pd.read_excel("excel1.xlsx",index_col=0,sheet_name="产品信息") print(exc) exc = pd.read_excel("excel1.xlsx",index_col=0,sheet_name=1) print(exc)
写入文件,CSV也类似:
# 写入Excel exc.to_excel("excel2.xlsx")
有时候,python自带的文件操作工具也可以和pandas的IO操作方法结合起来:
# 先通过open()打开文件,并设置errors="ignore"忽略错误 fp = open("csv文件.csv", "r", encoding="utf-8", errors="ignore") # 然后再通过pd.read_csv()方法读取文件,文件参数直接设为上面打开的文件对象 my_csv = pd.read_csv(fp, sep="-")
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。