python pandas读写execl

pandas:数据处理最常用的分析库之一,可以读取各种各样格式的数据文件,一般输出dataframe格式,功能强大
pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。
pandas是一个数据处理的包,本身提供了许多读取文件的函数,像read_csv(读取csv文件),read_excel(读取excel文件)等,只需一行代码就能实现文件的读取。
pandas提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐操作, DataFrame是一张多维的表,可以把它想象成一张Excel表单。

DataFrame对象的结构
对内容的读取分有表头和无表头两种方式,默认情形下是有表头的方式,即将第一行元素自动置为表头标签,其余内容为数据;当在read_excel()方法中加上header=None参数时是不加表头的方式,即从第一行起,全部内容为数据。读取到的Excel数据均构造成并返回DataFrame表格类型
对有表头的方式,读取时将自动地将第一行元素置为表头向量,同时为除表头外的各行内容加入行索引(从0开始)、各列内容加入列索引(从0开始)
对无表头的方式,读取时将自动地为各行内容加入行索引(从0开始)、为各列内容加入列索引(从0开始),行索引从第一行开始


读取excel
读取excel主要通过read_excel函数实现,除了pandas还需要安装第三方库xlrd。
import pandas as pd
pd.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)
read_excel的原型:pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None)
该函数主要的参数为io、sheetname、header、names、encoding。
io:excel文件,可以是文件路径、文件网址、file-like对象、xlrd workbook;如果命名为中文,在python2.7中,需要使用decode()来解码成unicode字符串,例如: pd.read_excel('示例.xlsx'.decode('utf-8))
sheetname:返回指定的sheet,参数可以是字符串(某个sheet名)、整型(sheet索引)、list(元素为字符串和整型,返回字典{'key':'sheet'})如['Sheet1','Sheet2'];none(返回字典,全部sheet);
header:指定数据表的表头,参数可以是int、list of ints,即为索引行数为表头;
names:返回指定name的列,即列名,参数为array-like对象。
encoding:关键字参数,指定以何种编码读取。
usecols:读取指定的列,例如想要读取第一列和第二列数据:pd.read_excel(“example.xlsx”, sheet_name=None, usecols=[0, 1])
该函数返回pandas中的DataFrame或dict of DataFrame对象,利用DataFrame的相关操作即可读取相应的数据。.,

#代码示例:
import pandas as pd
excel_path = 'example.xlsx'
df=pd.read_execl(file)
print (df) -->默认是打印第1个工作表sheet1中的数据,返回的是DataFrame类型,这是一种表格数据类型,它清晰地展示出了数据的表格型结构
df = pd.read_excel(excel_path, sheetname=None)
print(df['sheet1'].example_column_name)

print (df.head())  #只打印前5行数据
print (df.columns)  #打印列标题
--> Index(['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg'], dtype='object')
print (df.index)  #打印行
--> RangeIndex(start=0, stop=13, step=1)
print (df['bb']) #打印指定的列,将bb这列的数据全部打印出来
print (df['bb'].values) #打印指定的列,将bb这列的数据全部打印出来。
df['bb']和df['bb'].values:两者打印出来的展示的格式不一样
print (df.values) #打印除第1行以外的值,返回类型为ndarray(二维)
--> [['a2' 'b2' 'c2' 'd2' 'e2' 'f2' 'g2']
['a3' 'b3' 'c3' 'd3' 'e3' 'f3' 'g3']]
print (df.values[0]) #打印第1行的值,(不包括列表标题,实际是算第2行)。返回类型为ndarray(一维)
--> ['a2' 'b2' 'c2' 'd2' 'e2' 'f2' 'g2']
print (df.values[3,5])  #获取某个值,除去第1行的表头,index从0开始,即第5行,第6列的值
print (df.values[:4] #打印连续多行的值,实际是从第2行到第5行的值
print (df.values[2:5]) #实际打印的是第4,5,6行

获取某列的值:
print (df.values[:,3]) #打印某列的值,将第4列的值都打印出来
print (df.values[:,[3,5]]) #index从0开始,打印第4列和第6列的所有值



#读取同一个指定的sheet工作表:
df=pd.read_execl(f,'Sheet2')
df=pd.read_exec(f,sheet_name='Sheet2')
#读取同一个execl的多个sheet工作表:
df=pd.read_execl(f,['Sheet1','Sheet2']
#可以通过下表读取指定的sheet工作表:
df=pd.read_excel(file,sheet_name=1)  #1表示读取第2个sheet工作表
df=pd.read_excel(file,sheet_name=['Sheet1',2]) #读取Sheet1和Sheet3
#读取指定sheet的指定的某列的数值:
df=pd.read_excel(file,sheet_name='Sheet1',usecols=['cc'])  #打印Sheet1工作表的cc这列的所有的值
df=pd.read_excel(file,sheet_name='Sheet1',usecols=[0]) #打印Sheet1工作表的第1列的所有的值
df=pd.read_excel(file,sheet_name='Sheet1',usecols=[0,3])#打印Sheet1工作表的第1列和第4列的所有的值

ExcelFile:为了更方便地读取同一个文件的多张表格:
data=pandas.ExcelFile(file)  
print (data) --><pandas.io.excel._base.ExcelFile object at 0x00000152EFFF32B0>
print (data.sheet_names)  #获取execl中所有的工作表名
--》['Sheet1', 'Sheet2', 'Sheet3']
sheets = pandas.read_excel(data)  #sheet_name不写,默认为查第一个sheet的数据
sheets = pandas.read_excel(data, sheet_name="Sheet2")  #查看指定sheet的数据

print (data.parse('Sheet1')) #获取工作表Sheet1中所有的数据(带序号)



2. 写入excel
写入excel主要通过pandas构造DataFrame,调用to_excel方法实现。
只有DataFrame对象才能使用to_excel方法
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)

该函数主要参数为:excel_writer。
excel_writer:写入的目标excel文件,可以是文件路径、ExcelWriter对象;
sheet_name:被写入的sheet名称,string类型,默认为'sheet1';
na_rep:缺失值表示,string类型;
header:是否写表头信息,布尔或list of string类型,默认为True;
index:是否写行号,布尔类型,默认为True;
encoding:指定写入编码,string类型。

import pandas as pd
writer = pd.ExcelWriter('output.xlsx')
df1 = pd.DataFrame(data={'col1':[1,1], 'col2':[2,2]})
df1.to_excel(writer,'Sheet1')
writer.save()

 

posted @ 2022-07-28 00:34  Sky-wings  阅读(745)  评论(0编辑  收藏  举报