1、数据迭代

1.1 迭代行

(1)df.iterrows()

  for index, row in df[0:5].iterrows():  #需要两个变量承接数据
print(row)
print("\n")

  for index, row in df[0:5].iterrows():
print(row.team) #通过对象属性方式
print(row['name']) #通过字典方式读取具体列
print("\n")

(2)df.iertuples()

  #生成一个nametuples类型的数据,默认name为Pandas(可在参数中指定)

  for row in df[0:5].itertuples():
print(row,"\n")

  for row in df[0:5].itertuples():
print(row.name,"\n") #可以通过元素属性的方式取出具体值

1.2 迭代列

(1)df.iteritems()、df.items()

  # df.items(),df.iteritems() 迭代时返回(列名,本列的series结构数据)

  for label, item in df[0:5].items():  #label是列名
print(label,item)
print("\n")

  for label, item in df[0:5].items():
print(item) #item的数据结构是series(有行索引,和数据)
print("\n")

  for label, colunm in df[0:5].items():
print(colunm.sort_values()) #数据结构是series(有行索引,和数据)因此可以使用series的方法
print("\n")

(2)对dataframe直接进行迭代

  for item in df:
print(item) #item会得到df的列名
print("\n")

  for item in df:
print(df[item]) #item会得到df的列名,通过df[item]又可以得到每个列的值
print("\n")

2、函数应用

2.1 pipe()

  #将复杂的调用简化,语法结构为df.pipe(<函数名>,<参数列表或字典>)
#ta将dataframe或series作为函数的第一个参数 #定义一个函数,给所有季度的成绩加n,然后增加一个平均数 def add_mean(df,n):
n_df = df.copy()
n_df = n_df.loc[:,'Q1':'Q4'] + n
n_df['avg'] = n_df.sum(1) return n_df add_mean(df,100) #此时原本的df没变

  df.pipe(add_mean,100) #运行结果与上图一致

  #函数部分还可以使用lambda

  df.pipe(lambda df,x,y: df[(df.Q1>x) & (df.Q2 >y)],60,70)  #选出df中同时满足Q1>60,Q2>70的数据

2.2 apply()

  #apply(),对df按行和列(默认逐列传入)进行函数处理,也支持series(传入具体值)

  #将name转换为全小写
df.name.apply(lambda x : x.lower())

  #计算每个季度的平均成绩,计算方法为去掉一个最高分和去掉一个最低分

  def avg(s ):
min = s.min()
max = s.max()
average = (s.sum()-min-max)/ (s.count()-2)
return average df.select_dtypes(include='number').apply(avg)

  #计算每个学生的平均成绩

  df1 = df.set_index('name')
df1.select_dtypes(include='number').apply(avg)

  #与np.where()配合使用 np.where(逻辑表达式,替换值1,替换值2)

  df.apply(lambda x: (x.team=='A') & (x.Q1>90), axis=1).map({True:'GOOD',False:'Other'})

2.3 applymap()

  #applymap(),对dataframe或者series的所有元素(不包括索引)应用函数处理

  #使用lambda时,变量是指具体的值

  #例子:计算每个数据的长度

  df.applymap(lambda x:len(str(x)))

2.4 map()

  #map()根据输入对应关系映射值返回最终数据

  #可传入一个人字典(键为原值,值为新值)
#可传入一个函数(参数为series的每个值) df.team.map({'A':'一班','B':'二班','C':'三班','D':'四班'}) #没有映射值的会被填为NAN

  df.team.map('I am a {}'.format)  #传入格式化表达式来格式化数据内容

  df.Q1.map('11{}'.format) #数字会被转为字符

2.5 agg()

  #agg使用指定轴上的一项或多项操作进行汇总
#可以传入一个函数挥着函数的字符 #每列的最大值
df.agg('max')

  #将所有列聚合产生sum和min两行
#传入多个函数 df.agg(['sum','min'])

  #序列多个聚合
df.agg({'Q1':['sum','min'],'Q2':['sum','max']})

  #分组后聚合

  df.groupby('team').agg('max')

  #支持每个列分别用不同的方法聚合
#支持指定轴的方向 #1、不同列使用不同的方法进行聚合 df.agg(最大值=('Q1',max),
最小值=('Q2',min),
平均值=('Q3',np.mean),
求和=('Q4',lambda x :x.sum())
)

  #2、按行聚合
df.loc[:,'Q1':'Q4'].agg(np.mean,axis=1)

2.6 transform()

  #datafram或者series自身调用函数,并返回一个与自身长度相同的数据

  #1、应用匿名函数
df.transform(lambda x:x*2) #字符串会变成重复两遍,数字会*2

  #调用多个函数

  df.transform([np.sqrt,np.exp]) #自动筛选数字列,并应用

3、参考文献

《深入浅出Pandas》

pandas:数据迭代、函数应用的更多相关文章

  1. Jq_Ajax 操作函数跟JQuery 遍历函数跟JQuery数据操作函数

    JQuery文档操作方法 jQuery 库拥有完整的 Ajax 兼容套件.其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据. 函数                             ...

  2. 【summary】JQuery 相关css、ajax、数据操作函数或方法

    总结一下JQuery常用的函数方法,更加系统的整理一下. JQuery遍历的一些函数: 函数 描述 .add() 将元素添加到匹配元素的集合中. .andSelf() 把堆栈中之前的元素集添加到当前集 ...

  3. pandas小记:pandas数据输入输出

    http://blog.csdn.net/pipisorry/article/details/52208727 数据输入输出 数据pickling pandas数据pickling比保存和读取csv文 ...

  4. pandas DataFrame apply()函数(1)

    之前已经写过pandas DataFrame applymap()函数 还有pandas数组(pandas Series)-(5)apply方法自定义函数 pandas DataFrame 的 app ...

  5. pandas DataFrame.shift()函数

    pandas DataFrame.shift()函数可以把数据移动指定的位数 period参数指定移动的步幅,可以为正为负.axis指定移动的轴,1为行,0为列. eg: 有这样一个DataFrame ...

  6. pandas 数据预处理

    pandas 数据预处理 缺失数据处理 csv_data=''' A,B,C,D 1.0,2.0,3.0,4.0 5.6,6.0,,8.0 0.0,11.0,12.0,,''' import pand ...

  7. Pandas数据规整

    Pandas数据规整 数据分析和建模方面的大量编程工作都是用在数据准备上的,有时候存放在文件或数据库中的数据并不能满足数据处理应用的要求 Pandas提供了一组高级的.灵活的.高效的核心函数和算法,它 ...

  8. Python的工具包[1] -> pandas数据预处理 -> pandas 库及使用总结

    pandas数据预处理 / pandas data pre-processing 目录 关于 pandas pandas 库 pandas 基本操作 pandas 计算 pandas 的 Series ...

  9. Python之pandas数据加载、存储

    Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 利用Web API操作网络资源 1. 读 ...

随机推荐

  1. canvas系列教程03-柱状图项目1

    弄了一堆线方块和函数,感觉挺玄乎,然并卵.我们直接写个项目看看. canvas一个比较拽的应用就是图表和游戏,我们从浅入深,先玩图表,图表我们今天说一个最简单柱状图. 柱状图很多人用百度的echars ...

  2. JavaScript的使用以及JS常用函数(JS 遍历数组和集合)

    JavaScript入门 学习总结 1. 什么是 JavaScript 2. JavaScript 的特点 3. JS的使用 编写位置 基本语法 变量 打印变量 数据类型 innerHTML和inne ...

  3. wx.getImageInfo和wx.downloadFile下载用户头像报错(小程序canvas以及小程序图片下载部分)

    我先上图 之前我们后台配置的 downloadFile 合法域名是 https://wx.qlogo.cn,   用了好久都没出问题,  前段时间,  用户反馈  分享海报,  用户头像出不来!!!! ...

  4. ABP源码分析 - 约定注册(2)

    比较随意,记录下过程,以便忘了以后重拾. 所谓约定注册是指不需要明确写代码注入,只需要按约定规则写服务类,框架自动完成服务注册. 例如,只要这样写,框架就会自动注册. public class Tax ...

  5. js知识梳理5:关于函数的要点梳理(1)

    写在前面 注:这个系列是本人对js知识的一些梳理,其中不少内容来自书籍:Javascript高级程序设计第三版和JavaScript权威指南第六版,感谢它们的作者和译者.有发现什么问题的,欢迎留言指出 ...

  6. 前端NEXT实践系列:(一)ECMAScript 6.0技术栈

    随着ECMAScript 6.0(ES6)是JavaScript 语言的下一代标准的普及,各个大公司和大的厂商都推出了自己的前端开发框架,如Angular,React,Vue 等,微软更是锦上添花,开 ...

  7. 初识gradle, idea+springboot Demo

    写在前面; 使用maven管理写过几个springboot的系统, 此篇博客纯属记录整理学习的过程. 另外, 源码分享地址在最后. Java: 1.8.0_281 tomcat: 1.8 IDE: I ...

  8. 如何利用PowerShell完成的Windows服务器系统安全加固实践和基线检测

    0x00 前言简述 最近单位在做等保测评,由本人从事安全运维方面的工作(PS:曾经做过等保等方面的安全服务),所以自然而然的与信安的测评人员一起对接相关业务系统的检查,在做主机系统测评检查时发现了系统 ...

  9. Metalama简介2.利用Aspect在编译时进行消除重复代码

    上文介绍到Aspect是Metalama的核心概念,它本质上是一个编译时的AOP切片.下面我们就来系统说明一下Metalama中的Aspect. Metalama简介1. 不止是一个.NET跨平台的编 ...

  10. gin框架使用【1.Hello World】

    package mainimport ( "github.com/gin-gonic/gin")func main() { router := gin.Default() rout ...