import  pandas  as pd
'''特例说明
file1="a20201220.xlsx"
sheetname='Sheet1'
df=pd.read_excel(file1,sheetname,usecols="A:D")#读取第A-D四列所有内容
df=pd.read_excel(file1,sheetname,usecols=[1,3])#读取第1,第3列所有内容
df=pd.read_excel(file1,sheetname,usecols="A:B,D")#读取第A 第B 第D三列所有内容
df=pd.read_excel(file1,sheetname,usecols="A:B,D",header=3,nrows=15)#读取第A 第B 第D的第4行开始的连续15行内容
df=pd.read_excel(file1,sheetname,usecols="A:B,D",nrows=15)#读取第A 第B 第D的第1行开始的连续15行内容
print(df.values)

df=pd.read_excel(file1,sheet_name=None,index_col=0)#读取所有工作表名称
print(type(df))#<class 'dict'>
for i in df:
print(i)#工作表名称'''

class DoExcela:
def do_alldata(self,filename,sheetname,head=None):#返回列表,列表元素是某行内容
df=pd.read_excel(filename,sheetname,header=head)
lb=[]
for i in df.values:
lb.append(i)
return lb
def do_hangdata(self,filename,sheetname,hang,head=None):#指定行号,返回列表,列表元素是指定行的某列内容
df=pd.read_excel(filename,sheetname,header=head)
lb=[]
for i in df.values[hang]:
lb.append(i)
return lb
def do_liexhdata(self,filename,sheetname,lie,head=None):#指定列序号,返回列表,列表元素是指定行的某列内容
df=pd.read_excel(filename,sheetname,header=head)
lb=[]
for i in df[lie].values:
lb.append(i)
return lb
def do_liemingdata(self,filename,sheetname,lie,head=None):#指定列名称,返回列表,列表元素是指定行的某列内容
df=pd.read_excel(filename,sheetname)
lb=[]
for i in df[lie]:
lb.append(i)
return lb
def do_danyuandata(self,file_name:str,sheet_name:str,hang_name:int,lie_name:int):#返回单元格的内容,类型随数据变化
df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取
data1=df.iloc[hang_name,lie_name]
return data1
def do_sheetname(self,filename):#以列表形式返回所有工作表名称
df=pd.read_excel(filename,sheet_name=None)
return list(df)
def do_sheetshu(self,filename):#以列表形式返回所有工作表名称
df=pd.read_excel(filename,sheet_name=None)
return len(list(df))
#下面的函数是读取指定单元格区域的值存入列表
def do_quyudata(self,file_name:str,sheet_name:str,zsh_name:int,zsl_name:int,yxh_name:int,yxl_name:int):
#变量依次为文件名(表名)、工作表名称、左上行、左上列、右下行、右下列
df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取
alldata=[]#定义一个装所有数据的空列表
# 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0])
for i in range(zsh_name-1,yxh_name):
#Erowdata={}#定义一个装每行数据的字典
for j in range(zsl_name,yxl_name):#获取列索引
# df.columns[j]获取第j列表头,df.iloc[i,j]获取第i行第j列数据
alldata.append(df.iloc[i,j])
return alldata def do_alldata1(self,file_name:str,sheet_name:str)->'返回一个列表嵌套字典':
'''通过excel表格路径和表单名字获取表单完整数据,以列表内嵌套字典的方式返回'''
# 文件有表头索引是从第二行开始为0,如果设置header=None,索引从
df=pd.read_excel(file_name,sheet_name)#读取
alldata=[]#定义一个装所有数据的空列表
# 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0])
for i in range(df.shape[0]):
rowdata={}#定义一个装每行数据的字典
for j in range(df.shape[1]):#获取列索引
# df.columns[j]获取第j列表头,df.iloc[i,j]获取第i行第j列数据
rowdata[df.columns[j]]=df.iloc[i,j]
alldata.append(rowdata)
# print(alldata)
return alldata
def do_liedata(self,file_name:str,sheet_name:str,lie_name:int)->'返回一个列表嵌套字典':
'''通过excel表格路径和表单名字获取表单完整数据,以列表内嵌套字典的方式返回'''
# 文件有表头索引是从第二行开始为0,如果设置header=None,索引从
df=pd.read_excel(file_name,sheet_name,header=None)#从第一行开始读取
#df=pd.read_excel(file_name,sheet_name)#从第二行开始读取
alldata=[]#定义一个装所有数据的空列表
# 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0]
rowdata=[]#定义一个装每行数据的字典
for i in range(df.shape[0]):
rowdata.append(df.iloc[i,lie_name]) # print(alldata)
return rowdata
def do_hangdata1(self,file_name:str,sheet_name:str,hang_name:int)->'返回一个列表嵌套字典':
'''通过excel表格路径和表单名字获取表单完整数据,以列表内嵌套字典的方式返回'''
# 文件有表头索引是从第二行开始为0,如果设置header=None,索引从
df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取
#df=pd.read_excel(file_name,sheet_name)#从第一行读取
alldata=[]#定义一个装所有数据的空列表
# 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0]
rowdata=[]#定义一个装每行数据的字典
for i in range(df.shape[1]):
rowdata.append(df.iloc[hang_name,i]) # print(alldata)
return rowdata #下面的函数是读取指定单元格区域的值存入字典:键是显示列的顺序,值是单元格的值
def do_quyudatazj(self,file_name:str,sheet_name:str,zsh_name:int,zsl_name:int,yxh_name:int,yxl_name:int):
#变量依次为文件名(表名)、工作表名称、左上行、左上列、右下行、右下列
df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取
alldata=[]#定义一个装所有数据的空列表
# 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0])
for i in range(zsh_name-1,yxh_name):
rowdata={}#定义一个装每行数据的字典
for j in range(zsl_name,yxl_name):#获取列索引
# df.columns[j]获取第j列表头,df.iloc[i,j]获取第i行第j列数据
rowdata[df.columns[j]]=df.iloc[i,j]
alldata.append(rowdata)
return alldata
#openpyxl读取excel
from openpyxl import load_workbook
class DoExcel:
def get_data(self, file_name, sheet_name):
wb = load_workbook(file_name) # linux路径
sheet = wb[sheet_name]
test_data = []
for i in range(2, sheet.max_row + 1):
row_data = {}
for j in range(1, sheet.max_column + 1):
row_data[sheet.cell(1, j).value] = sheet.cell(i, j).value
test_data.append(row_data)
return test_data
file1="a20201220.xlsx"
af=DoExcela()
all=af.do_alldata1(file_name=file1,sheet_name="Sheet1")
lie=af.do_liedata(file_name=file1,sheet_name="Sheet1",lie_name=0)
hang=af.do_hangdata1(file_name=file1,sheet_name="Sheet1",hang_name=0)
danyuan=af.do_danyuandata(file_name=file1,sheet_name="Sheet1",hang_name=0,lie_name=3)
quyu=af.do_quyudata(file_name=file1,sheet_name="Sheet1",zsh_name=1,zsl_name=1,yxh_name=4,yxl_name=4)
print(type(hang))
quyu1=af.do_quyudatazj(file_name=file1,sheet_name="Sheet1",zsh_name=1,zsl_name=1,yxh_name=4,yxl_name=4)
for i in hang:
print(type(i))
break
print(danyuan)
for i in quyu:
print("quyu",i)
for i in quyu1:
print("quyu1",i)
print("单行")
for i in hang:
print(i)
#break
hang1=af.do_hangdata(file1,"Sheet1",0)
print("第0行",hang1,type(hang1))
sheet1=af.do_sheetname(file1)
print(sheet1)
sheet2=af.do_sheetshu(file1)
print(sheet2)
all1=af.do_alldata(file1,"Sheet1")
print(all1,type(all1))
lie1=af.do_liexhdata(file1,"Sheet1",0)
print(lie1,type(lie1))
dany=af.do_danyuandata(file1,"Sheet1",2,3)
print(dany,type(dany))

python pandas 读excel类的更多相关文章

  1. Python Pandas操作Excel

    Python Pandas操作Excel 前情提要 ☟ 本章使用的 Python3.6 Pandas==0.25.3 项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日 ...

  2. Python pandas 获取Excel重复记录

    pip install pandas pip install xlrd 大量记录的时候,用EXCEL排序处理比较费劲,EXCEL程序动不动就无响应了,用pands完美解决. # We will use ...

  3. python pandas读写excel

    import pandas as pd import numpy as np df = pd.read_csv("result.csv") # csv # df = pd.read ...

  4. python pandas写入excel文件

    pandas读取.写入csv数据非常方便,但是有时希望通过excel画个简单的图表看一下数据质量.变化趋势并保存,这时候csv格式的数据就略显不便,因此尝试直接将数据写入excel文件. pandas ...

  5. python xlrd读Excel表

    1 xlrd第三方库 注意:xlrd较新版本不支持读xlsx表,需安装1.2.0版本(pip install xlrd==1.2.0)或使用其他库. xlrd库官方文档:https://xlrd.re ...

  6. 整理总结 python 中时间日期类数据处理与类型转换(含 pandas)

    我自学 python 编程并付诸实战,迄今三个月. pandas可能是我最高频使用的库,基于它的易学.实用,我也非常建议朋友们去尝试它.--尤其当你本身不是程序员,但多少跟表格或数据打点交道时,pan ...

  7. Python利用pandas处理Excel数据的应用

    Python利用pandas处理Excel数据的应用   最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...

  8. Python用Pandas读写Excel

    Pandas是python的一个数据分析包,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷地处理数据的函数和方法. Pandas官方文档 ...

  9. 【python基础】利用pandas处理Excel数据

    参考:https://www.cnblogs.com/liulinghua90/p/9935642.html 一.安装第三方库xlrd和pandas 1:pandas依赖处理Excel的xlrd模块, ...

随机推荐

  1. BERT模型的OneFlow实现

    BERT模型的OneFlow实现 模型概述 BERT(Bidirectional Encoder Representations from Transformers)是NLP领域的一种预训练模型.本案 ...

  2. H.265 HD 和H.265 4K Video Encoder IP Core

    H.265 HD 和H.265 4K Video Encoder IP Core H.265 HD Video Encoder IP Core(H.265 HD Video/Audio Encoder ...

  3. Collection&Map

    1.Collection 添加元素 boolean add(E e) 删除元素 boolean remove(E e) 元素个数 int size() 清空 void clear() 判空 boole ...

  4. Spring Cloud系列(七):消息总线

    在上一篇中,当一个配置中心的客户端启动之后,它所引用的值就无法改变了,但是Spring Cloud 提供了一种手段去解决了这个问题--Spring Cloud Bus. 一.Spring Cloud ...

  5. 反汇编EXE添加一个启动时的消息框

    反汇编EXE添加一个启动时的消息框 最近有一个要修改PE文件的需求,就先从EXE文件下手吧,我也是初学一个小时而已,不过之前接触过一点汇编罢了,这篇文章算是个DEMO,主要的思路是将其反汇编得到汇编代 ...

  6. Atcoder rc122-c Calculator 斐波那契

    传送门 题解 先说结论: 任意正整数可以拆分成若干个斐波那契数 斐波那契数列: 1 1 2 3 5 8 13 21 34 例 17 = 13 + 3 + 1 看上去是对的,怎么证明呢? 首先假如每一个 ...

  7. ES5中的类

    之前小编对于类和类的基本特征(所谓的封装.继承.多态)理解一直不是很到位,同时在实际项目应用中也用的比较少,今天小编就结合ES5中的基本用法和大家聊聊,希望小伙伴会在这篇文章有属于自己的收获,并能够在 ...

  8. UF_MODL 建模操作

    Open C uc6560 uf5300uf5301uf5303uf5305uf5309uf5310uf5311uf5313uf5315uf5317uf5319uf5320uf5321uf5323uf ...

  9. 【NX二次开发】打开信息窗口UF_UI_open_listing_window

    头文件:uf_ui_ugopen.h函数名:UF_UI_open_listing_window 函数说明:打开信息窗口 测试代码: #include <uf.h> #include < ...

  10. centos 7 能ping通但是telnet 22 不通解决方法

    试过关闭Linux防火墙,打开sshd服务,修改ens33为enth0.发现不好使. 经过不断的努力我发现,windows系统里面的VMware Network Adapter VMnet8设置的ip ...