Pandas读取并修改excel的示例代码
作者:Debris丶 发布时间:2022-08-18 23:27:34
一、前言
最近总是和excel打交道,由于数据量较大,人工来修改某些数据可能会有点浪费时间,这时候就使用到了Python数据处理的神器—–Pandas库,话不多说,直接上Pandas。
二、安装
这次使用的python版本是python2.7,安装python可以去python的官网进行下载,这里不多说了。
安装完成后使用Python自带的包管理工具pip可以很快的安装pandas。
pip install pandas
如果使用的是Anaconda安装的Python,会自带pandas。
三、read_excel()介绍
首先可以先创建一个excel文件当作实验数据,名称为example.xlsx,内容如下:
name | age | gender |
---|---|---|
John | 30 | male |
Mary | 22 | female |
Smith | 32 | male |
这里是很简单的几行数据,我们来用pandas实际操作一下这个excel表。
# coding:utf-8
import pandas as pd
data = pd.read_excel('example.xlsx', sheet_name='Sheet1')
print data
结果如下:
这里使用了read_excel()方法来读取excel,来看一个read_excel()这个方法的API,这里只截选一部分经常使用的参数:
pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None)
这里主要参数为io,sheet_name,header,usecols和names
io:excel文件,如果命名为中文,在python2.7中,需要使用decode()来解码成unicode字符串,例如: pd.read_excel('示例'.decode('utf-8))
sheet_name:返回指定的sheet,如果将sheet_name指定为None,则返回全表,如果需要返回多个表,可以将sheet_name指定为一个列表,例如['sheet1', 'sheet2']
header:指定数据表的表头,默认值为0,即将第一行作为表头。
usecols:读取指定的列,例如想要读取第一列和第二列数据:
pd.read_excel("example.xlsx", sheet_name=None, usecols=[0, 1])
四、使用
这里先来一个在机器学习中经常使用的:将所有gender为male的值改为0,female改为1。
# coding:utf-8
import pandas as pd
from pandas import DataFrame
# 读取文件
data = pd.read_excel("example.xlsx", sheet_name="Sheet1")
# 找到gender这一列,再在这一列中进行比较
data['gender'][data['gender'] == 'male'] = 0
data['gender'][data['gender'] == 'female'] = 1
print data
结果如下:
需要注意的是,这里的data为excel数据的一份拷贝,对data进行修改并不会直接影响到我们原来的excel,必须在修改后保存才能够修改excel。保存的代码如下:
DataFrame(data).to_excel('example.xlsx', sheet_name='Sheet1', index=False, header=True)
这时候我们再打开example.xlsx文件看看是否更改了:
如果我们想要新增加一列或者一行数据怎么办呢?这里给出参考:
新增列数据:
data['列名称'] = None
新增行数据,这里行的num为excel中自动给行加的id数值
data.loc[行的num] = [值1, 值2, ...]
以上面的数据为例:
# coding:utf-8
import pandas as pd
from pandas import DataFrame
data = pd.read_excel("example.xlsx", sheet_name='Sheet1')
# 增加行数据,在第5行新增
data.loc[5] = ['James', 32, 'male']
# 增加列数据,给定默认值None
data['profession'] = None
# 保存数据
DataFrame(data).to_excel('example.xlsx', sheet_name='Sheet1', index=False, header=True)
打开excel看到的结果如下:
说完了增加一行或一列,那怎样删除一行或一列呢?
import pandas as pd
from pandas import DataFrame
data = pd.read_excel("example.xlsx", sheet_name='Sheet1')
# 删除gender列,需要指定axis为1,当删除行时,axis为0
data = data.drop('gender', axis=1)
# 删除第3,4行,这里下表以0开始,并且标题行不算在类
data = data.drop([2, 3], axis=0)
# 保存
DataFrame(data).to_excel('example.xlsx', sheet_name='Sheet1', index=False, header=True)
这时候打开excel可以看见gender列和除标题行的第3,4行被删除了。
总结
pandas除了上述的基本功能以外,还有其它更高级的操作,想要进一步学习的小伙伴们可以去pandas网站进行学习。
来源:https://blog.csdn.net/qq_34377830/article/details/81872568


猜你喜欢
- PyTorch中实现卷积的重要基础函数1、nn.Conv2d:nn.Conv2d在pytorch中用于实现卷积。nn.Conv2d( &nb
- PySnooper 是一个非常方便的调试器。如果您正在试图弄清楚为什么您的Python代码没有按照您的预期去做,您会希望使用具有断点和监视功
- 介绍reflect包实现运行时反射,允许一个程序操作任何类型的对象。典型的使用是:取静态类型interface{}的值,通过调用TypeOf
- 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方
- 前言:事务(Transaction)是一组SQL组成的执行单元(Unit),是数据库并发控制和恢复回滚的基本单位。一个事务中可能包含多个SQ
- 数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常&l
- queue和pipe的区别: pipe用来在两个进程间通信。queue用来在多个进程间实现通信。 此两种方法为所有系统多进程通信的基本方法,
- 本文详细讲述了Python使用MySQLdb for Python操作数据库的方法,分享给大家供大家参考。具体如下:一般来说网站就是要和数据
- 本文实例讲述了MySQL 表数据的导入导出操作。分享给大家供大家参考,具体如下:数据导出1. 使用 SELECT ..
- 序列化把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serializa
- 循环语句(有两种):while 语句for 语句while 语句:问题:输入一个整数n,让程序输出n行的:hello
- 6月初,Python之父Guido van Rossum在今天的PyCon US大会上作了名为“Python Language”的演讲。近日
- pythonDES加密与解密以及hex输出和bs64格式输出具体代码如下所示:import pyDesimport base64Key =
- 导语:使用 python-plotly 模块来进行压测数据的绘制,并且生成静态 html 页面结果展示。不少小伙伴在开发过程中都有对模块进行
- 前言Python 中一切皆对象,这些对象的内存都是在运行时动态地在堆中进行分配的,就连 Python 虚拟机使用的栈也是在堆上模拟的。既然一
- 最近因为项目原因需要编写数据库设计文档,但是由于数据表太多,手动编写耗费的时间太久,所以搞了一个简单的脚本快速生成数据库结构,保存到word
- 1. 概述快过年了,刚刚收到了两个消息,一个好消息,一个坏消息。先说好消息,好消息就是微信群里有人要发红包,开心~不过转念一想,前几次的红包
- 引子闭包是有权访问另一个函数作用域中的变量的函数。闭包是javascript中很难理解的部分,很多高级的应用都依靠闭包来实现的,我们先来看下
- 今天在使用pytorch进行训练,在运行 loss.backward() 误差反向传播时出错 :RuntimeError: grad can
- 数据库的约束就是关系型数据库给我们提供的一种"校验数据"合法性的机制1. NULL约束创建表时,可以指定某列不为空cre