pandas处理excel的常用方法技巧(上)
1. 导库
import pandas as pd
2. 读取excel文件
这里要注意的就是第二个参数header如果不设置,pandas会默认把excel的第一行当作columns,header=None的时候pandas会为我们新生成从0开始的数字做columns, 我们可以通过header=1把第二行当作columns;第三个参数index_col是表示用哪一列做index的,如果不设置的话,pandas会默认生成一串从0开始的数字当作index,我们可以设置指定列来当作index,例如index_col=“id”.
如果出现数据没在excel表格的左上角,可以使用skiprows参数来略过行,也可以使用usecols="F:H"来决定从第几列开始读取
可以使用sheet_name=参数决定读取第几个sheet
df = pd.read_excel('d:/用户信息.xlsx', header=1, index_col='id')
df = pd.read_excee('d:/books.xlsx', skiprows=3, usecols="G:L")
3. 读取一个对象的头和尾
我们可以通过head()方法和tail()方法来读取头和尾,不设置参数默认读5行,可以设置int类型参数来决定我们读多少行。
df.head() # 读前五行
df.head(7) # 读前七行
df.tail() # 读后五行
df.tail(3) # 读后三行
4. 为对象设置columns
通过修改对象的columns属性就相当于重新为对象设置了columns
df.columns = ['订单id', '用户id', '订单状态']
5. 为对象设置index
我们可以通过set_index()方法设置index, 如我们可以把订单id
这一列设置为index,但是要注意的是设置之后,订单id
将不再出现在df.columns属性中了,会变成index的name;第二个参数inplace就地修改,可以设置为True和False.
df.set_index('订单id', inplace=True)
5. 写入文件保存
可以通过to_excel()方法保存到本地.
df.to_excel('d:/user_id.xlsx')
6. pandas中表格的行和列
在一个二维表格中,一行或者一列我们都可以用Series对象来表示。一个Series是当作行还是当作列,完全是由我们加入的方法决定的。
7. Series简介和Series属性
Series的结构和字典的结构很相似,不过在Series中不叫keys了,叫index;
Series的属性有index, name, value, data(快要移除了), 还有其他不常用属性可以到pycharm中一个点全出来了.
8. Series创建
创建一个空的Series:
s1 = pd.Series()
从字典生成,字典的key是这里的index
d = {'x':100, 'y':200, 'z':300}
s2 = pd.Series(d)
从列表生成,这时候需要两个列表, 一个用作value,一个用作index
lst1 = [100, 200, 300] # 当作value
lst2 = ['a', 'b', 'c'] # 当作index
s3 = pd.Series(lst1, index=lst2)
9. 用Series来构造DataFrame
相当于我们用一行一行或者一列一列元素,拼出一个excel表格;
首先看一下用三个Series对象构造出一个Excel表格的三列,可以用Series的name属性当作列名, index当作每一行的行号;如果index不相同,取index的并集,没有数值的地方给个NaN
s1 = pd.Series([1, 2, 3], index=[1, 2, 3], name='A')
s1 = pd.Series([10, 20, 30], index=[1, 2, 3], name='B')
s1 = pd.Series([100, 200 300], index=[1, 2, 3], name='C')
df = pd.DataFrame({s1.name:s1, s2.name:s2, s3.name:s3}) # 用的最多的方式, 一列一列的
如果不以字典方式构造excel表格的话,直接只用Series序列构造,会出现以Series的name当作行号,一行一行的生成:
df = pd.DataFrame(s1, s2, s3) # 一行一行的
10. 修改一个值或者修改n个值(自动填充)
先找到Series再改Series中的元素:
import pandas as pd
from datetime import date, timedelta
def add_month():
yd = md // 12
m = d.month + md % 12
if m != 12
yd += m // 12
m = m % 12
return date(d.year+yd, m, d.day)
books = pd.read_excel("d:/book.xlsx", skiprows=3, usecols="C:F", index_col=None,
dtype={'name':str, 'id':str, 'date':str})
for i in books.index:
if type(books['name'].at[i]) != int:
books['name'].at[i]
books['id'] = 'yes' if i & 1 else 'No'
books['date'].at[i] = add_month(start, i)
books.set_index("id")
第二种方法是直接在DataFrame中改对应的单元格
for i in books.index:
books.at[i, 'date'] = 12
11. 函数填充
需求,在excel表格中,我们可以根据前面几列的数据按照某种函数进行计算,再添加到指定表格中,这里用程序完成:
books = pd.read_excel('d:/bookss.xlsx', index_col='ID')
books["Price"] = books["ListPrice"] * books["Discount"]
print(books)
第二种情况就是DataFrame中的每一列Series有一个apply(function)方法,给function传入一个函数可以对这一Series进行函数处理:
books = pd.read_excel('d:/bookss.xlsx', index_col='ID')
books["ListPrice"] = books["ListPrice"].apply(lambda x: x+2)
12. 给数据排序
使用DataFrame的sort_values()方法进行排序,按照by参数排序, inplace就地, ascending=False是降序;
如果我们想要先按照某列排序,再按某列排序,by后面可以跟一个列表,ascending也可以给个列表,两种顺序;
products = pd.read_excel('d:/List.xlsx, index_col='ID')
products.sort_values(by='Price', inplace=True, ascending=False)
products.sort_values(by=['Worthy', 'Price'], inplace=True, ascending=[True, False])
13. 数据筛选、过滤
很多时候,我们想要展现的数据,是全体的数据,我们只需要展示其中的一部分
使用loc属性
loc属性介绍
# DataFrame对象有loc属性,loc属性可以通过bool值返回从DataFrame对象中筛选出来的DataFrame对象
# 先创建一个DataFrame对象
lst1 = pd.Series(["tom", "jerry", "jacky", "wayne", "justin"])
lst2 = pd.Series([35, 24, 16, 45, 26])
lst3 = pd.Series([98, 95, 86, 73, 99])
students = pd.DataFrame({"name":lst1, "age":lst2, "grade":lst3})
print(students)
name age grade
0 tom 35 98
1 jerry 24 95
2 jacky 16 86
3 wayne 45 73
4 justin 26 99
# 定义两个函数来判断成绩是否是优秀,年龄是否年轻, 返回的都是bool值
def young_age(age):
return age < 30
def good_grade(grade):
return grade > 85
# 通过DataFrame对象的apply方法,对students的元素进行判断取bool值,为了不污染原数据,可以使用拷贝
cp = students.copy()
cp["grade"] = cp["grade"].apply(good_grade)
cp["age"] = cp["age"].apply(young_age)
print(cp)
name age grade
0 tom False True
1 jerry True True
2 jacky True True
3 wayne False False
4 justin True True
# 这时候我们可以清晰的看到age和grade都已经被判断为了是否是young,是否是good
# 有了这一步,下一步我们就可以用bool在loc属性中进行筛选元素了
students = students.loc[students["age"].apply(young_age)].loc[students["grade"].apply(good_grade)]]
这里就清晰的看出来我们两次使用loc属性对数据进行清洗,然后重新赋值给了students变量
print(students)
name age grade
1 jerry 24 95
2 jacky 16 86
4 justin 26 99
# 这里就得到了清洗后的数据,即我们要展示的数据,既年轻,成绩又优秀的同学
下面这个同理, 不过students[“age”]和students[“grade”]还可以换成students.age和students.grade来访问对应的列Series:
import pandas as pd
def age_18_to_30(age):
return 18 <= age < 30 # 判断一个年龄是否是18到30之间
def level_a(grade):
return 85 <= grade <= 100 # 判断一个成绩是否是优秀
students = pd.read_excel("d:/students.xlsx", index_col="ID")
students = students.loc[ students["Age"].apply(age_to_30) ].loc[ students["score"].apply(level_a) ]
pandas处理excel的常用方法技巧(上)的更多相关文章
- 深入理解pandas读取excel,txt,csv文件等命令
pandas读取文件官方提供的文档 在使用pandas读取文件之前,必备的内容,必然属于官方文档,官方文档查阅地址 http://pandas.pydata.org/pandas-docs/versi ...
- Python利用pandas处理Excel数据的应用
Python利用pandas处理Excel数据的应用 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...
- C 语言常用方法技巧
C语言常用方法技巧 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impor ...
- Python读写EXCEL文件常用方法大全
前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pa ...
- Python Pandas操作Excel
Python Pandas操作Excel 前情提要 ☟ 本章使用的 Python3.6 Pandas==0.25.3 项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日 ...
- 【Python自动化Excel】pandas处理Excel数据的基本流程
这里所说的pandas并不是大熊猫,而是Python的第三方库.这个库能干嘛呢?它在Python数据分析领域可是无人不知.无人不晓的.可以说是Python世界中的Excel. pandas库处理数据相 ...
- 深度学习与CV教程(6) | 神经网络训练技巧 (上)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 学习excel的使用技巧复制一列文本成新列去重
学习excel的使用技巧复制一列文本成新列去重 其实比较简单的技巧 知道了就会 不知道就比较麻烦 直接复制到一列 找到 数据选项 删除重复项
- 51-python3 pandas读写excel
转载自:https://blog.csdn.net/brink_compiling/article/details/76890198?locationNum=7&fps=1 0. 前言Pyth ...
随机推荐
- python编程基础之十五
二维列表 l1 = [[1, 2, 3], [4, 5, 6]] print(l1[0][0]) 列表负值 列表复制为两种:深复制,浅复制 浅复制:只复制容器,容器里的元素不产生副本,只是技术引用增加 ...
- UVA - 11795 Mega Man's Mission
Mega Man is off to save the world again. His objective is to kill the Robots created by Dr. Wily who ...
- 浅谈json web token及应用
Json Web Token (JWT),是一个非常轻巧的规范,这个规范允许在网络应用环境间客户端和服务器间较安全的传递信息.该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO) ...
- BBEdit 13.0 for Mac 打开大文件不吃力
BBEdit 是一款拥有 16 年历史的 HTML 和文本编辑器,拥有高性能且流畅的文本处理能力,适用于 Web 和软件开发者,具备功能丰富且强大的智能搜索.代码折叠.FTP 和 SFTP 管理等功能 ...
- 当前机器的各种进程、服务信息的收集(win)
当前机器的各种进程.服务信息的收集(win) 前言 我们在做渗透测试的过程中,遇到Windows系统的环境是最多的,然而在拿到一台Windows胸膛呢权限之后,我们要进行横向渗透测试或者纵向渗透测试, ...
- selenium-find_element相关内容(2)
find_element跟find_element_by_xxx的区别 1.查看文件D:\soft\python36\Lib\site-packages\selenium\webdriver\remo ...
- Lambda函数及其用法
Lambda函数又称匿名函数,匿名函数就是没有名字的函数,函数没有名字也行? 当然可以啦.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要非给它取个名字不可. 先来看个简单lambda函 ...
- 树莓派apt报错:E: '\Release' 这个值对 APT::Default-Release 是无效的,因为在源里找不到这样的发行
E: '\jessie' 这个值对 APT::Default-Release 是无效的,因为在源里找不到这样的发行 开始尝试了各种方法, 换apt源, 改/etc/apt/apt.conf.d/10d ...
- 04 python学习笔记-函数、函数参数和返回值(四)
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print(),我们也可以自己创建函数,这叫做用户自定 ...
- mp-vue拖拽组件的实现
作为一个效率还不错的小前端,自己的任务做完之后真的好闲啊,千盼万盼终于盼来了业务的新需求,他要我多加一个排序题,然后用户通过拖拽来排序,项目经理看我是个实习生,说有点复杂做不出来就算了,我这么闲的一个 ...