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()