pandas入门-基本功能

本文对pandas基本功能进行回顾总结,围绕索引对象、选取和过滤数据、算术运算和数据对齐、函数应用和映射、排序和排名等方面展开,介绍了相关函数如reindex、drop、apply等的含义、参数及使用示例,并附上代码注释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是对pandas基本功能的一个回顾性总结记录,本文将围绕下属目录展开,并附上了自己的代码注释。

目录

索引对象   

index的方法和属性

 相关函数

  drop

选取和过滤数据   

算术运算和数据对齐  

函数应用和映射 apply等

函数应用和映射

排序和排名

 sort_index

series.rank


 

索引对象   


    特点
        索引对象并不可直接修改,但是可以通过如set_index和reset_index等方法进行 变换

index的方法和属性


    相关函数


        reindex 
            含义 :
                Series的reindex将会根据新索引进行重排。如果某个索引值当前不存在,就引入缺失值;DataFrame的reindex生成新的(行)索引和列的dataframe。
            参数(了解即可)

例子 

obj3=Series(['blue','purple','yellow'],index=[0,2,4])
print(obj3.reindex(range(6),method='ffill')) # method 方法给值'ffill'和'pad',均为使用向前填充 ,对于时间序列数据常用此方法,对应的向后填充为bfill(或者backfill)
print("\n")
print(obj3) # obj3并没有边,即索引并不可修改。reindex只是新建了一个对象而已
print(obj3.reindex(range(6),method='pad'))

  输出
0      blue
1      blue
2    purple
3    purple
4    yellow
5    yellow
dtype: object
0      blue
2    purple
4    yellow
dtype: object
0      blue
1      blue
2    purple
3    purple
4    yellow
5    yellow
dtype: object

实例2 

#reindex 
frame= DataFrame(np.arange(9).reshape(3,3),index=['a','c','d'],columns=['Ohio','Texas','California'])
print(frame)
frame2 = frame.reindex(['a', 'b', 'c', 'd']) # 这是产生了一个新的DataFrame
print(frame2)
print(frame) # frame的索引仍然为原值acd,

    输出  # 注意frame的索引仍然为原值acd 
      Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8
   Ohio  Texas  California
a   0.0    1.0         2.0
b   NaN    NaN         NaN
c   3.0    4.0         5.0
d   6.0    7.0         8.0
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

  drop

 含义
          丢弃某条轴上的一个或多个项很简单,只要重新赋值不取这个索引数组或列表即可。但也通过drop的方式去做,由于需要执行一些数据整理和集合逻辑,drop方法默认返回的是一个在指定轴上删除了指定值的新对象。注意原来的并没有变。如果要改变原来的,则参数inplace=True。
参数
        第一个参数为行的索引或者要删除列的list。

 axis=0 ,表示行变,从行标签删除要删除的行索引的各行数据
axis=1,表示列变,删除列的值
inplace=False ,默认不替换,即不会改变原对象,如果置为True,则会替换改变掉原来的对象
例子

data = DataFrame(np.arange(16).reshape((4, 4)),
                 index=['Ohio', 'Colorado', 'Utah', 'New York'],
                 columns=['one', 'two', 'three', 'four'])
print(data.drop(['Colorado','Ohio']))

   输出
              one  two  three  four
Utah        8    9     10    11
New York   12   13     14    15

 

选取和过滤数据   

切片索引
    注意: 利用标签的切片运算与普通的Python整数切片运算不同,其末端是包含的:
        例子

obj22=Series(np.arange(4),index=['d','b','a','c']) 
print(obj22['b':'c']) #此处的str 索引切片也是从前往后去,注意 包括了右侧的c的 值!!!  而整型值是左闭右开
print(obj22[0:2]) # 左闭右开 ,并没有包含2对应的a 的值

 输出
b    1
a    2
c    3
dtype: int64
d    0
b    1
dtype: int64

普通选取和过滤数据
    选取指定列的各行数据, 例子

print(data[['three','one']] )# 也可以直接写列,前面并不用加东西,等同与前面ix和loc,前面加行。选取three,one这两列所有行的数据
print(data.ix[:,['three','one']])#  同上选取three,one这两列所有行的数据
print(data.loc[:,['three','one']]) # 同上选取three,one这两列所有行的数据

选取某列中符合某个条件的所有各行数据,例子

print(data[data['three']>5])# 选取的数据中,three这列的值要大于5
print(data.ix[data.three>5,:4]) # 选取第三列的数据中值大于5的数据,且只取前2个列
            

 输出
                one  two  three  four
Colorado    4    5      6     7
Utah        8    9     10    11
New York   12   13     14    15

                 one  two
Colorado    4    5
Utah        8    9
New York   12   13

 

算术运算和数据对齐  

pandas重要的一个功能是,它可以对不同索引的对象进行算术运算。在将对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集。对于有数据库经验的用户,这就像在索引标签上进行自动外连接。 对于不同索引对,可以指定填充值

#使用df1的add方法,传入df2以及一个fill_value参数:   
df1.add(df2, fill_value=0)

函数应用和映射 apply等


    NumPy的ufuncs(元素级数组方法)也可用于操作pandas对象,例子
   如np.abs(frame)# 返回一个对frame的各个数据都取绝对值
    apply方法
        含义:将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法即可实现此功能:
  例子

f = lambda x : x.max()-x.min()
frame.apply(f) # 默认是axis=0,行数会变,按行操作,列数不会变,返回得到的是一个新的series
print(frame)

       输出
b    1.802165
d    1.684034
e    2.689627
dtype: float64
  b         d         e
Utah   -0.204708  0.478943 -0.519439
Ohio   -0.555730  1.965781  1.393406
Texas   0.092908  0.281746  0.769023
Oregon  1.246435  1.007189 -1.296221                  

def f(x):
    return Series([x.min() ,x.max()],index=['min','max']) # 注意也可以是多个结果的封装
print(frame.apply(f)) # 行或者列级的函数用apply 

  输出                                
            b         d         e
min -0.555730  0.281746 -1.296221
max  1.246435  1.965781  1.393406
applymap方法
        含义:对于dataframe中将函数应用到元素级别
例子
format=lambda x : '%.2f'%x  # 整个保留2为小数
frame.applymap(format) #元素级的函数用applymap ,即对每个元素都处理
map方法
        含义
            对于Series将函数 应用到元素级别

排序和排名


 sort_index


        根据条件对数据集排序(sorting)也是一种重要的内置运算。要对行或列索引进行排序(按字典顺序),可使用sort_index方法,它将返回一个已排序的新对象。默认是axis=0,对行索引排序。可以指定按某列排序
 例子

frame=DataFrame(np.arange(8).reshape((2,4)),index=['three','one'],columns=['d','a','b','c'])
print(frame.sort_index() )# sort_index的顺序默认是字典序, 默认是对行,即行变,各列的相对顺序不会变
print(frame.sort_index(1)) # 对列
print(frame.sort_index(axis=1)) # 对列

 输出
        d  a  b  c
one    4  5  6  7
three  0  1  2  3
       a  b  c  d
three  1  2  3  0
one    5  6  7  4
       a  b  c  d
three  1  2  3  0
one    5  6  7  4
按某列排序例子

print(frame.sort_ values(by='d',ascending=False))# 按d列的降序排序

输出
        d  a  b  c
one    4  5  6  7
three  0  1  2  3


series.rank

 根据某个series中值的打下进行给排序的名次
例子

obj=Series([7,-5,7,4,2,0,4])
print(obj.rank(method='first') )# Series的rank和numpy.argsort产生的间接排序索引 (注意是索引) 差不多,只不过他可以根据某种规则破坏平级关系,另外返回的是排序的序号(从1开始,而numpy.argsort返回的是索引(值从0开始))。如给值first 时,表示对于出现同样大小的值时按值在原始数据中的出现顺序分配排名。给值max ,使用整个分组的最大排名。 
print(obj.rank(method='max'))

输出
0    6.0
1    1.0
2    7.0
3    4.0
4    3.0
5    2.0
6    5.0
dtype: float64
0    7.0
1    1.0
2    7.0
3    5.0
4    3.0
5    2.0
6    5.0
dtype: float64

 

参考与鸣谢: 

《利用python进行数据分析》

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值