目录

1、前言

2、读取Excel

3、对Excel进行操作

3.1、获取行号、列名

3.2、获取单元格的值,并循环输出

3.3、对空值进行处理,替换

3.4、增加一列,并对新增列的第一行进行赋值

3.5、将修改后数据保存到原文档

3.6、关于循环取数

4、错误处理

5、全部代码


1、前言

网上也有很多关于如何使用pandas对Excel表格进行操作的文章,本文纯当记录

Excel原文件数据如下:

2、读取Excel

对Excel操作分两步:

1、首先要导入pandas库

2、设置Excel文件路径

注意:

pandas.read_excel(file, sheet_name=0, keep_default_na=False)
1、file为要读取的Excel文件
2、sheet_name表示要读取的sheet名,0表示第一个sheet,1表示第2个sheet,依次类推;也可以直接写sheet的名称,如sheet_name='Sheet1'
3、当Excel中有空值时,直接读取会显示nan,read_excel方法中加上keep_default_na=False后,
空值nan会变成:'' 空字符串,后续可用if cell_data=='' 进行判断

代码如下:

import pandas

file = r'D:\student.xlsx'

class opexcel():
    def getdata(self, file):
        data = pandas.read_excel(file, sheet_name=0, keep_default_na=False)
        print(type(data)) # 输出数据类型(DataFrame)
        print(data)  # 输出数据

if __name__ == '__main__':
    opexcel().getdata(file)

打印结果如下:

3、对Excel进行操作

3.1、获取行号、列名

row_index = data.index.values  # 行号: 数组形式<class 'numpy.ndarray'> [0 1 2 3 4 5 6 7 8]
        print('行号是:%s' % row_index)
        row_num = len(data.index.values)  # 行数
        print('行数是:%s' % row_num)
        col_index = data.columns.values  # 列名: 数组形式<class 'numpy.ndarray'>['姓名' '性别' '年龄' '住址' '爱好']
        print('列名是:%s' % col_index)
        col_num = len(data.columns.values)  # 列数
        print('列数是:%s' % col_num)

打印结果:

3.2、获取单元格的值,并循环输出

for i in range(row_num): # 循环行数
            for j in range(col_num): # 循环列数
                cell_data=data.iloc[i,j] # 获取单元格的值
                   print('第%s行,第%s列的数据是:%s ' %(i,i,cell_data))

打印结果如下:

3.3、对空值进行处理,替换

Excel文件中,某个单元格的值可能为空,直接读取会显示nan,且各个单元格的数据类型可能不一致,如date、str、int、float。这时如果直接读取,使用numpy.isnan()或者pandas.isnull()进行判断,都可能会报错,所以在开头读取Excel文件的方法pandas.read_excel(file, sheet_name=0, keep_default_na=False)中加上keep_default_na=False后,空值nan会变成:'' 空字符串。

现在我们想要将Excel中所有为空的单元格,替换为NULL字符串,操作如下

1、取出所有列名

2、循环列名,对空值替换(据实践,只有列名才有.replace()方法)

col_index = data.columns.values  # 列名
for col in col_index :data[col].replace('','NULL',inplace=True)# 第一个参数是替换前的值,即Excel表指定列的值,如有多个相同的值,后续都会被替换第二个参数是替换后的值,此处为字符串'NULL',也可填数字、或其他类型第三个参数,是否替换,True为替换print(data)
打印结果如下:

如要将上方结果中【爱好】这一列的【无】,替换为羽毛球,操作如下:

data['爱好'].replace('无','羽毛球',inplace=True)

结果如下:

3.4、增加一列,并对新增列的第一行进行赋值

新增一列【成绩】,并赋值未None:

data['成绩']=None

打印结果如下:

修改增列的第一行的值为50:

data['成绩'][0]=50 

打印结果如下:

3.5、将修改后数据保存到原文档

注意:以上操作中将空值替换、新增列、修改单元格数据等编辑操作,只在控制台有效,实际文件的内容并不会被改变

file = r'D:\student.xlsx'

data.to_excel(file,sheet_name='Sheet1',index=False,header=True)

# 用DataFrame的to_excel方法可将编辑后的数据进行保存(前面第一节已知data为DataFrame类型)

1、第一个参数file,表示数据将要保存到这个文件。可以是原文件(r'D:\student.xlsx'),如果写另外的文件(r'D:/test/newstudent.xlsx'),则数据将保存到另一个文件中,原文件数据不变

2、第二个参数sheet_name,表示将数据保存到文件的哪一个sheet工作表。如工作表不存在则会报错。

3、第三个参数index,表示工作表自带的序号。如果设置index=True,则保存后的数据将多出一列

4、第四个参数header,表示列名。设置header=True,保存后的数据将带上列名;设置header=False,保存后的数据将没有列名

注意:

读取文件的时候,sheet_name可以写成 sheet_name=0或 sheet_name='Sheet1'

data = pandas.read_excel(file, sheet_name=0,keep_default_na=False)

写入文件的时候,只能填写工作表的名称sheet_name='Sheet1'

保存后的数据如下:

设置index=True,结果如下:

设置header=False,结果如下:

3.6、关于循环取数

col_index = data.columns.values  # 列名 ['姓名' '性别' '年龄' '住址' '爱好' '成绩']
数组,用in进行循环取值:for i in col_index:
col_num = len(data.columns.values)  # 列数 6
数值,用rang进行循环取数:for i in range(col_num :

3.7、字符串分割

url=data['URL'][0] # https://blog.csdn.net/m0_46400195/article/detailspy
print(url)
print(type(url))
str1=str(data['URL'][0]).split('/')
# 注意: 虽然显示URL为str类型,但是仍然要先将data['URL'][0]转为str,才能使用.split方法进行分割。str(data['URL'][0]).split('/'),也可以写成str(url).split('/')
print(str1) # 打印分割后的结果
newstr1=str1[0]+'//'+str1[2]+'/'+str1[3]+'/'+'druid' #根据分割后的信息进行拼接
newstr2 = str1[0] + '//' + str1[2] + '/' + str1[3]+'/' + 'druid/index.html'
print(newstr1) #打印拼接后的字符串
print(newstr2)
打印结果如下:

4、错误处理

1、PermissionError: [Errno 13] Permission denied

这个错误出现可能是文件未关闭,关闭后再操作即可。还有可能是文件损坏了,打开文件,确认文件内容是否正常

2、……

5、全部代码

import pandas
import requests
from pandas import DataFrame
import xlwt
'''
1、当Excel中有空值时,直接读取会显示nan,read_excel方法中加上keep_default_na=False后,
空值nan会变成:‘’ 空字符串,后续可用if cell_data=='' 进行判断
2、col_index = data.columns.values  # 列名数组col_index:['序号' '是否导出' '所属单位'],用in进行循环取值:for i in col_index:row_num = len(data.index.values)  # 行数数值row_num:用rang进行循环取数:for i in range(row_num):
'''
file = r'D:\student.xlsx'class opexcel():def getdata(self, file):data = pandas.read_excel(file, sheet_name=0,keep_default_na=False)# 当Excel中有空值时,直接读取会显示nan,read_excel方法中加上keep_default_na=False后,# 空值nan会变成:‘’ 空字符串,后续可用if cell_data=='' 进行判断# print(type(data))# print(data)  # 输出数据row_index = data.index.values  # 行号: 数组形式<class 'numpy.ndarray'> [0 1 2 3 4 5 6 7 8]print('行号是:%s' % row_index)row_num = len(data.index.values)  # 行数print('行数是:%s' % row_num)col_index = data.columns.values  # 列名: 数组形式<class 'numpy.ndarray'>['序号' '是否导出' '所属单位' '项目名称' '项目']print('列名是:%s' % col_index)col_num = len(data.columns.values)  # 列数print('列数是:%s' % col_num)# data['result']=None# data.to_excel(r'D:\userCase11.xls', sheet_name='Sheet1', index=False, header=True)# for i in range(row_num): # 循环行数#     for j in range(col_num): # 循环列数#         cell_data=data.iloc[i,j] # 获取单元格的值#         print('第%s行,第%s列的数据是:%s ' %(i,i,cell_data))## for col in col_index :#     data[col].replace('','NULL',inplace=True)#     print(data)## data['爱好'].replace('无','羽毛球',inplace=True)# print(data)# data['成绩']=None# print(data)# data['成绩'][0]=50# print(data)# data.to_excel(file,sheet_name='Sheet1',index=False,header=False)if __name__ == '__main__':opexcel().getdata(file)

Python之如何使用pandas操作Excel表相关推荐

  1. python 第三方模块之 pandas 操作 excel

    python 解析 excel 对比 包 版本 xls读 xlsx读 xls写 xlsx写 备注 xlrd 1.1.0(2017年8月22日) √ √ 2.0 之后不支持xlsx xlwt 1.3.0 ...

  2. python pandas操作excel表

    原始excel表 要转换成的excel表 代码 import pandas as pdclass Daletou(object):def __init__(self):# 读取excel表的哪几列se ...

  3. python读写excel模块pandas_如何用python pandas操作excel?

    之前跟大家说过关于python处理excel的问题,但是大家反映有些繁琐,大概涉及内容比较多,于是,小编在日常学习中,发现了更简单的方式,现在给大家展示,以便于大家在日后学习里可以方便使用,一起来看下 ...

  4. Python入门到实战(五)自动化办公、pandas操作Excel、数据可视化、绘制柱状图、操作Word、数据报表生成、pip install国内镜像下载

    Python入门到实战(五)conda使用.pandas操作Excel.数据可视化.绘制柱状图.操作Word.数据报表生成.pip install国内镜像下载 conda使用 常用操作 配置VS+Co ...

  5. python使用xlsx和pandas处理Excel表格的操作步骤

    python的神器pandas库就可以非常方便地处理excel,csv,矩阵,表格 等数据,下面这篇文章主要给大家介绍了关于python使用xlsx和pandas处理Excel表格的操作步骤,文中通过 ...

  6. Python Pandas操作Excel表格文件:创建新表格,追加数据

    前言: python操作excel表格文件的增删读写,一般需要用到的第三方库有xlwt,xlrd.xlrd负责读取excel,xlwt负责写入excel文件.这种操作方法比较繁琐,效率还不错,通俗易懂 ...

  7. python一键合并上千个Excel表(对不起!!因为这事,我和同事吵了一架)

    如果你觉得对你有用,留下一个赞再走,不过分吧!!谢谢!! 文章目录 一.老板的需求总是莫名奇妙 二.别人不帮你,你帮你自己 三.上干货,看不懂,我买飞机票给你 四.上代码:(每一步都有注释,完全不用担 ...

  8. pandas写入excel指定行_使用pandas操作excel

    pandas操作excel 最近由于要处理一些excel表格,发现pandas可以免去很多的繁琐的人工劳动,在这里记录一下我所用到的知识. 导入文档 将excel中的工作表导入 filename = ...

  9. 安装命令:pip install xlrd ,pandas操作Excel学习笔记__7000

    pandas操作Excel学习笔记_loc和iloc_7000 pandas操作Excel学习笔记__7000 1.安装环境:pandas需要处理Excel的模块xlrd,所以需要提前安装xlrd.不 ...

最新文章

  1. linux 实验 广技师 进程管理与系统监视,Linux系统管理之进程管理
  2. 5G NGC — BSF 会话绑定支持功能
  3. 一步一步SharePoint 2007之十二:实现Form认证(2)——创建添加管理帐户的工程
  4. 如何为 .NET Core CLI 启用 TAB 自动补全功能
  5. MYSQL修改传输数据包大小值(max_allowed_packet)
  6. 简单理解混淆矩阵—Matlab详细代码注解
  7. 光立方体c语言程序,444光立方程序怎么写 光立方原理图、源代码及制作教程 - 全文...
  8. 2021应届生DJI校招在线测评几点说明
  9. 项目过程管理(十七)结项
  10. 史上最全的Java从入门到精通,播放最多的Java视频教程
  11. 3D人体姿态估计总结
  12. APP性能测试-FPS测试
  13. web前端期末大作业 基于HTML+CSS家乡主题毕业设计源码
  14. 2048php,Phaser实现2048
  15. 无密码解锁iPhone
  16. ROS2 Humble测试版功能包列表
  17. tecplot 通过数据点、坐标点绘制云图、三维云图
  18. 基于javaweb房屋租赁管理系统的设计与实现
  19. 粒子群优化算法和python代码_Python编程实现粒子群算法(PSO)详解
  20. 2021/7/8——集训Day.3

热门文章

  1. 小程序 cover-view 字体_字体小助手_Fontant:快速制作专属字体
  2. php8关闭jit,PHP8新功能JIT 编译器、联合类型和属性
  3. 怎么更好的在php上走得更远,我是如何走上PHP开发这条路
  4. input框输入中文内容,另一个input框中时时显示转换后的拼音首字母缩写
  5. Python - 3.6 学习四
  6. Proxmox支持虚拟机和容器的虚拟化平台
  7. vue路由跳转刷新页面
  8. 风压和功率计算公式轴流式_轴流风机的安置及风压的计算
  9. 最全的谷歌浏览器快捷键 chrome快捷键
  10. [论文笔记]MAS论文综述