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. Go语言web开发---Beego的cookie

    1.简介 (1)Http是无状态的协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否是同一个客户端,这样的设计严重阻碍了web程序的设计. (2)Cookie是解决Http协议无 ...

  2. 安装Keras出现的问题

    先是pip install tensorflow  给装好了,但是pip install  keras出现如下的问题: 只好搜帖子,参考如下的帖子,我直接 conda install keras wi ...

  3. [NOIP1998 提高组] 拼数

    题目描述 设有 n 个正整数​ a1-an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数. 输入格式 第一行有一个整数,表示数字个数 n. 第二行有 n 个整数,表示给出的 n 个整数 a_ ...

  4. ADO.NET的五大对象

    ADO.NET是一种数据访问技术,使得应用程序可以连接到数据库存储,并以各种方式操作存储在其中的数据.该技术基于.NETFramework,与.NET Framework类库的其余部分高度集成. 其中 ...

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

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

  6. Python 机器学习实战 —— 监督学习(上)

    前言 近年来AI人工智能成为社会发展趋势,在IT行业引起一波热潮,有关机器学习.深度学习.神经网络等文章多不胜数.从智能家居.自动驾驶.无人机.智能机器人到人造卫星.安防军备,无论是国家级军事设备还是 ...

  7. 惊呆了,Spring Boot居然这么耗内存!

    Spring Boot总体来说,搭建还是比较容易的,特别是Spring Cloud全家桶,简称亲民微服务,但在发展趋势中,容器化技术已经成熟,面对巨耗内存的Spring Boot,小公司表示用不起.如 ...

  8. Winform中用户自定义控件中外部设置子控件属性的方法

    假设我们新建立一个用户自定义控件,由一个lable1和pictureBox1组成 此时我们在外部调用该控件,然后想动态改变lable1的值,我们该怎么办? 假设实例化的用户控件名为UserContro ...

  9. JavaScript 沙盒模式

    微前端已经成为前端领域比较火爆的话题,在技术方面,微前端有一个始终绕不过去的话题就是前端沙箱 什么是沙箱 Sandboxie(又叫沙箱.沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程 ...

  10. Linux基本命令精讲

    一.Shell Linux系统中运行的一种特殊程序 在用户和内核之间充当"翻译官 用户登录 Linux系统时,自动加载一个 Shell程序 Bash是 LinuxShell系统中默认使用的程 ...