python/pandas/numpy数据分析(十)-函数, rank,重复索引

简介: DataFrame的apply方法,将函数应用到行或者列形成的一维数组上.frame=pd.

DataFrame的apply方法,将函数应用到行或者列形成的一维数组上.

frame=pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['Utha','Ohio','Texas','Oregon'])
frame
. b d e
Utha -0.683356 -0.577942 -0.022012
Ohio -0.230113 -1.240582 -0.497071
Texas -0.487803 0.044398 0.958905
Oregon -0.178136 -1.201671 -0.921106
np.abs(frame)
. b d e
Utha 0.683356 0.577942 0.022012
Ohio 0.230113 1.240582 0.497071
Texas 0.487803 0.044398 0.958905
Oregon 0.178136 1.201671 0.921106
f=lambda x: x.max()- x.min()
frame.apply(f)

b    0.505220
d    1.284980
e    1.880011
dtype: float64

frame.apply(f, axis=1)
Utha      0.661344
Ohio      1.010468
Texas     1.446708
Oregon    1.023536
dtype: float64

除了标量以外,传递给apply的函数还可以返回由多个值组成的Series:

def f(x):
    return pd.Series([x.min(),x.max()], index=['min','max'])
frame.apply
. b d e
min -0.683356 -1.240582 -0.921106
max -0.178136 0.044398 0.958905
frame.apply(f,axis=1)
. min max
Utha -0.683356 -0.022012
Ohio -1.240582 -0.230113
Texas -0.487803 0.958905
Oregon -1.201671 -0.178136

如果你想得到frame中各个浮点值的各个格式化字符串,使用applymap

format=lambda x: '%.2f' % x
frame.applymap(format)
. b d e
Utha -0.68 -0.58 -0.02
Ohio -0.23 -1.24 -0.50
Texas -0.49 0.04 0.96
Oregon -0.18 -1.20 -0.92

之所以叫applymap,是因为Series中有个函数叫map

frame['e'].map(format)
Utha      -0.02
Ohio      -0.50
Texas      0.96
Oregon    -0.92
Name: e, dtype: objec

rank

rank函数返回从小到大排序的下标,对于平级的数,rank是通过“为各组分配一个平均排名”的方式破坏评级关系

obj = pd.Series([7,-5,7,4,2,0,4])
print (obj.rank())

0    6.5
1    1.0
2    6.5
3    4.5
4    3.0
5    2.0
6    4.5
dtype: float64

最小的为1
根据值在源数据中出现的顺序给出排名

obj.rank(method='first')
0    6.0
1    1.0
2    7.0
3    4.0
4    3.0
5    2.0
6    5.0
dtype: float64

这里写图片描述

也可以按照降序进行排名

obj.rank(ascending=False, method='max')
0    2.0
1    7.0
2    2.0
3    4.0
4    5.0
5    6.0
6    4.0
dtype: float64

最小的是7

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from pandas import Series,DataFrame

#虽然pandas的很多函数(如reindex)要求标签唯一,但是并不具有强制性

obj = Series(range(5),index = list('aabbc'))

print obj

#索引是否唯一用is_unique看是否唯一

print obj.index.is_unique

#对于重复值的索引,选取的话返回一个Series,唯一的索引返回一个标量

print obj['a']

#对于DataFrame也是如此

df = DataFrame(np.random.randn(4,3),index = list('aabb'))

print df

print df.ix['b']

#####自己导入数据的时候数据处理之前可以做一下index唯一性等,自己创建DataFrame注意不能这样
目录
相关文章
|
2月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
322 1
|
2月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
187 1
|
2月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
290 1
|
2月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
263 0
|
2月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
416 0
|
2月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
167 0
|
3月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
275 101
|
3月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
221 99
|
3月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
194 98
|
3月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能

推荐镜像

更多