ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python pandas读写execl

2022-07-28 01:01:43  阅读:231  来源: 互联网

标签:execl None sheet python excel df read pd pandas


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

 

标签:execl,None,sheet,python,excel,df,read,pd,pandas
来源: https://www.cnblogs.com/skyzy/p/16527085.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有