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. MEMS传感器作为变革的驱动力

    MEMS sensors as drivers for change 物联网(IoT)正在改变与周围世界互动的方式.每个人,每件事,都是相互联系的,很快就会相互联系.微机电系统(MEMS)设备和传感器 ...

  2. sql 数据库使用注意事项

    1.在对数据库表进行操作时,一定要注意当前操作的是哪一个数据库,否则很容易引起不必要的错误.对于master数据库中的数据文件,尽量不要去对其操作. 2.可通过图形方式对数据库进行备份操作,可通过数据 ...

  3. 【Javascript + Vue】实现对任意迷宫图片的自动寻路

    前言 可以直接体验最终效果:https://maze-vite.vercel.app/ 寻路前: 寻路后,自动在图片上生成红色路径,蓝色是探索过的区域: 这里我故意用手机斜着角度拍,就是为了展示程序完 ...

  4. flume采集MongoDB数据到Kafka中

    环境说明 centos7(运行于vbox虚拟机) flume1.9.0(自定义了flume连接mongodb的source插件) jdk1.8 kafka(2.11) zookeeper(3.57) ...

  5. mybatis学习——多对一和一对多查询

    首先先来说明一下数据库,数据库有两张表student表和teacher表: student表如下: teacher表如下: 两张表的关系:多个学生关联一位老师(多对一) *其中tid是外键 需要sql ...

  6. centos 7 iotop 安装

    安装指令:yum -y install iotop 指定查看aubunt 用户的读写状态:iotop -u aubunt -P -k -t 允许在非交互模式下每隔3秒刷新一次,只刷新6次:iotop ...

  7. Java并发编程--基础进阶高级(完结)

    Java并发编程--基础进阶高级完整笔记. 这都不知道是第几次刷狂神的JUC并发编程了,从第一次的迷茫到现在比较清晰,算是个大进步了,之前JUC笔记不见了,重新做一套笔记. 参考链接:https:// ...

  8. vs里颜色显示块怎样显示

    就是这种 vs中选择工具-扩展和更新,搜索Web Essentials,安装就好了. 他会安装很多扩展,我这里只需要css相关的

  9. 信息熵,交叉熵与KL散度

    一.信息熵 若一个离散随机变量 \(X\) 的可能取值为 \(X = \{ x_{1}, x_{2},...,x_{n}\}\),且对应的概率为: \[p(x_{i}) = p(X=x_{i}) \] ...

  10. Pytest学习笔记8-参数化

    前言 我们在实际自动化测试中,某些测试用例是无法通过一组测试数据来达到验证效果的,所以需要通过参数化来传递多组数据 在unittest中,我们可以使用第三方库parameterized来对数据进行参数 ...