1 说明

  1. 预计需要15min阅读此教材;
  2. 本教材仅讲述如何查看excel数据,筛选,排序,查找替换数据,不涉及excel中复杂的图形绘制及样式修改。

2 假设

假设,已经存在一个test.xlsx文件,仅包含一个sheet,文件内容如下。

col1 col2
foo1 bar1
foo2 bar2

3 读取

3.1 读取excel

读取一个excel并赋值给df

import pandas as pd

df = pd.read_excel('foo.xlsx')
查看行列数
#法一
df.shape
# (2,2)
# m,n其中m为行数,n为列数
# 法二
df.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 2 entries, 0 to 1
# Data columns (total 2 columns):
# col1 fa 2 non-null object
# col2 fa 2 non-null object
# dtypes: object(2)
# memory usage: 112.0+ bytes
查看列名
df.columns
# Index(['col1', 'col2'], dtype='object')

说明:如果没有定义表头columns展示仅是索引名1,2,3

获取单元格值

如果了解单元格的行列值可以使用iloc方法获取单元格值。

df.iloc[m, n]

其中m为行数,n为列数,二者均从0开始索引。

查看行

可以使用标签,切片,标签矩阵等等获取行数。

# 查看单行
df.iloc[1] or df.loc['index']
# 查看多行
df.iloc[[1,2,3,4,8,9]]
# 查看前7行
df.iloc[:7]
# 或者
df.loc[:7]

python中切片是不算终止一个元素的,df.iloc取前n个元素是使用':n',而loc方法是计算终止元素的,取前n元素方法就变为df.loc[:n-1]

查看列
# 查看单列
df['col1']或者df.col1,,其中col1为列名。推荐使用df.col1
# 查看多列,过滤时传入一个列数组
df[['col1','col2']]
# 查看前7列,由于不清楚前7列名,使用[]选择较为困难,pandas提供iloc方法,支持切片选择。
# :意味着选择所有行,0:7意味着选择从1行到第7行
df.iloc[[: , 0:7]]

如果excel表格有列名且没有空格,pandas会默认为df增加一个同列名的字段

全表查看

pandas没有全表查看api,如果要全表查看需要自行编写代码:

# 由于DataFrame是采用列式存储,这里第一层循环使用列,第二层循环使用行。
for i in df.columns:
for j in df.index:
if df.loc[j, i] == 'bar2':
print('column name:',i,',row idx:',j)

4 表格操作

4.1 新增

插入新列

插入新列仅需添加一个新的值,并赋值一个Series对象即可。

df['newcolumn']= pd.Series([1,2])
插入新行

方法一:使用loc。

# 注意在插入时列必须匹配,不能有缺省列。
chipo.loc[chipo.shape[0]]={'col1':value}

方法二:使用append

newdf = pd.DataFrame({'col3':value})
# 插入一条记录
df = df.append(newdf, ignore_index=True)

4.2 修改

修改单元格的值

如果你知道修改单元格的行和列可以使用iloc方法:

# 行和列从0开始索引
df.iloc[m, n] = targetV

4.3 删除

DataFrame提供drop方法支持批量删除行和列。

drop(labels, axis=0, level=None, inplace=False, errors='raise')
# --axis为0时表示删除行,axis为1时表示删除列

参数解释,

# 删除第一和第三行
df.drop(label=[1,3])
# 删除名为item的列
df.drop(label=['item'], axis=1)
# 等价
df.drop(label='item', axis=1)

pandas仅支持按标签删除行列,不支持按行列值删除,这点与选择不同

5 过滤和排序

5.1 过滤

添加过滤条件,

df[df.col1=='Chicken Bowl']

如果在一个列中要选择多个值,Series对象有isin方法可以实现该功能

df[df.col1.isin('Chicken Bowl','huawei')]
多条件过滤

如果需要添加多个过滤条件可以使用,

df[(df.col1=='Chicken Bowl') & (df.col2==30)]

该方法返回值类型为DataFrame。

5.2 排序

DataFrame和Series都有sort_values方法,可按照某列数据做排序。排序方法返回的值依然为DataFrame。

df.sort_values(['column'])
//sort_values支持传入数组,所以可以指定多个排序字段 # or 使用Series方法
df.col1.sort_values()

设定排序顺序

//按降序排序
df.sort_values(['col1','col2'],ascending=False)

按列值排序

df.sort_index(axis=1, ascending=False)

单列排序会影响所有记录重新排序,而不是影响单独列。

6 保存文件

至此,你已学会如何读取文件,查看数据并操作excel值,现在需要将结果写回excel。DataFrame提供to系列方法实现写回。

df.to_excel('test.xlsx', sheet_name='Sheet1')

注意读取时使用pandas静态方法,写回则使用DataFrame的方法

引用

  1. DataFrame
  2. Series

像用excel一样用pandas的更多相关文章

  1. 51-python3 pandas读写excel

    转载自:https://blog.csdn.net/brink_compiling/article/details/76890198?locationNum=7&fps=1 0. 前言Pyth ...

  2. python pandas写入excel文件

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

  3. 数据可视化基础专题(二):Pandas基础(一) excel导入与导出

    1.Excel 1.1 Excel导入 read_excel() pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col ...

  4. 用python的pandas读取excel文件中的数据

    一.读取Excel文件   使用pandas的read_excel()方法,可通过文件路径直接读取.注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件.并 ...

  5. 【Python自动化Excel】pandas处理Excel数据的基本流程

    这里所说的pandas并不是大熊猫,而是Python的第三方库.这个库能干嘛呢?它在Python数据分析领域可是无人不知.无人不晓的.可以说是Python世界中的Excel. pandas库处理数据相 ...

  6. python数据处理excel和pdf,并打包成exe

    之前零散的用过一点python做数据处理,这次又遇到一个数据处理的小功能,因此,记录一下整个流程,方便以后查阅. 功能要求:读取excel,找指定的PDF文件的页数是否与excel中记录的一致 整个处 ...

  7. pandas库的学习笔记

    Environment pandas 0.21.0 python 3.6 jupyter notebook 开始 习惯上,我们导入如下: import pandas as pd import nump ...

  8. Pandas 处理丢失数据

    处理丢失数据 import pandas as pd from pandas import Series, DataFrame import numpy as np 有两种丢失数据: 1. None ...

  9. 13--Python入门--文件读写--CSV&Excel文件

    EXCEL文件 import pandas as pd excel=pd.read_excel('read_excel.xlsx') print(excel) CSV文件 import pandas ...

随机推荐

  1. P2034 选择数字 / P2627 [USACO11OPEN]Mowing the Lawn G

    Link 题目描述 给定一行 \(n\) 个非负整数 \(a[1]..a[n]\) .现在你可以选择其中若干个数,但不能有超过 \(k\) 个连续的数字被选择.你的任务是使得选出的数字的和最大. 输入 ...

  2. Spring Boot第七弹,别再问我拦截器如何配置了!!!

    持续原创输出,点击上方蓝字关注我吧 前言 上篇文章讲了Spring Boot的WEB开发基础内容,相信读者朋友们已经有了初步的了解,知道如何写一个接口. 今天这篇文章来介绍一下拦截器在Spring B ...

  3. 十一、模拟扫码登录微信(用Django简单的布置了下页面)发送接收消息

    为了能够模拟登陆QQ,并获取信息.对扫码登录微信进行了分析.简单的用了一下Django将获取的信息映射到页面上.(python3+pycharm) 主要过程就是: 1.获取二维码 2.扫码登录(有三种 ...

  4. Jmeter接口测试--上传附件

    jmeter接口测试上传附件指引 1.添加HTTP请求取样器--在取样器中的HTTP请求项中对"使用KeepAlive"."对POST使用multipart/form-d ...

  5. 介绍使用Cordova和Web Starter Kit开发Android

    介绍 如今,每个人都想制作移动应用程序,为什么不呢?世界上有更多的移动设备比任何其他用户设备.Android尤其流行,但是为什么不从一个众所周知的跨平台应用的基础开始呢?Android的开发显然比其他 ...

  6. 跟着动画学习 TCP 三次握手和四次挥手

    TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一.很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答. 本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地 ...

  7. centos7 samba安装教程

    samba的用途:有的时候,我们需要在centos7 的文件能共享给其他机器. rpm -qa|grep samba yum install -y samba setenforce 0 sed -i ...

  8. linux(centos8): 临时关闭/永久关闭交换分区swap?

    一,为什么要关闭swap? 1,swap的用途? swap 分区就是交换分区,(windows平台叫虚拟内存) 在物理内存不够用时, 操作系统会从物理内存中把部分暂时不被使用的数据转移到交换分区, 从 ...

  9. python 保存登录状态 cookie

    import requests from lxml import etree import faker url = "https://www.yeves.cn/admin/Articles& ...

  10. 生成流水号(20060210-0001)的SQL函数

    create table t_sql(id int identity(1,1),code char(13),[name] nvarchar(10)) go create function f_crea ...