Pandas入门第一章之apply()数据转化和sort()排序

同上本节主要介绍pandas两个基本功能,排序和映射,写这个的目的只是简单的记录一下我的理解,其中肯定会有错误或者不全面看的时候要注意一下。

第一:  本节介绍的排序操作是指,根据原始数据中某列数据中值的大小重新调整每行记录

第二:  本节介绍的映射是指: 对于数据集中某列施加一个函数之后, 将其转化到另一个数据之中

 

比赛时排序这个功能主要和时间序列相关,所以在这使用的例子的所以设置为时间类型,排序主要分为使用sort_index()对数据进行重新排序应该注意的几点信息, PS本来想用时间序列进行分类的,但是太麻烦了,所以打算放到后面groupby()时使用。

 

使用排序操作时应该注意一下几点信息:

第一、进行排序之后,排序的结果并不会修改原始数据,所以如果需要需要修改原始数据中的数据, 设置inplace = True

第二、排序之后使用reset_index()将设置好的索引重新定位

第三、将某一列设置为索引之后,最后一定要使用reset_index()函数,因为你将某列设置成索引之后,如果你不使用reset_index()函数时, 则该列数据就会‘丢失’。

第四、我发现pandas中的封装的函数一般都不会直接修改原始数据中的信息,如果想要修改原始数据中的信息,一般要设置个****= True的选项。

import pandas as pd

data = {'name': ['YYLin', 'YYLin_1', 'YYLin_2', 'YYLin_3', 'YYLin_4'],
        'birth_day': ['2000-01', '2001-02', '2005-03', '2001-04', '2002-06'],
        'age': [6, 7, 8, 9, 10]}

frame = pd.DataFrame(data)
# 第一种方式 使用某列数据的值进行排序
inplace = False
if inplace:
        frame.sort_values(by='birth_day', inplace=True)
else:
        frame.sort_values(by='birth_day')

print("按照birth_day进行排序的结果:\n", frame)

# 第二种使用索引进行排序 首先是设置索引 然后按照大小逆序排序
frame.set_index('age', inplace=True)
print("按照索引进行排序的结果:\n", frame.sort_index(ascending=False))

# 其中一个可选参数为drop=True为真时,会将原始数据设置的索引直接删除
drop = False
if drop:
        print("重新恢复索引之后数据的状态:\n", frame.reset_index(drop=True))
else:
        print("重新恢复索引之后数据的状态:\n", frame.reset_index())


 

 

使用apply()函数应该注意的几点信息:

第一:   调用apply的对象, 也即是你想进行数据转化的列元素,是将整列数据一起传进来的。

第二:   如果想改变每个元素的取值,可以使用lambda函数逐个改变  不确定对不对

第三:   apply修改某列中的数据之后,并不会修改原始的数据,所以你需要修改原始数据的值时,最后需要一个复制操作

import pandas as pd
import math

# 主要介绍函数的应用如何使用apply 进行函数的映射
data = {'name': ['YYLin', 'YYLin_1', 'YYLin_2', 'YYLin_3', 'YYLin_4'],
        'birth_day': [2000, 2001, 2005, 2001, 2002],
        'age': [6, 7, 8, 9, 10]}

# 生成DataFrame类型
frame = pd.DataFrame(data)
print("原始数据集中的数据信息是:\n", frame)

# 对原始数据求指数 然后使用apply应用该函数
f = lambda x: math.log(x)
use_return_value = False

# 对某一列应用了apply之后需要需要将其赋值给原始列 不然数据不会修改
if use_return_value:
    frame['age'] = frame['age'].apply(f)
else:
    frame['age'].apply(f)

print("经过apply之后的数据是:\n", frame)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值