Python — 偶遇的函数 — 更新中

本文介绍了Python中几个常用的数据处理和分析函数,包括自然排序函数natsort、累积函数如cumsum,以及如何使用isinstance检查对象类型。还讨论了如何利用dropna过滤NaN,使用%timeit测量代码执行时间,以及数据打乱和去重的方法。对于时间处理,提到了strftime和dt.date在处理时间数据时的区别。这些技巧对于提升数据处理效率非常有帮助。

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

目录

自然排序函数natsort

累积函数

Isinstance查看一个对象是否是指定类的实例

dropna 过滤NaN函数

%timeit 计时,查看语句运行时间

Shuffle  把数据随机打散

drop_duplicates去重详解

.values.tolist() 数组转列表

strftime('%y-%m-%d')与dt.date 时间


计算百分比变化

pandas 库中的 .pct_change() 方法用于计算数据序列中相邻元素之间的百分比变化。它对于分析时间序列数据、金融数据等非常有用,可以用来计算增长率、收益率等指标。

.pct_change() 方法默认计算每个元素与其前一个元素之间的百分比变化。公式如下:

Percentage Change=(Current Value−Previous Value​) / Previous Value

如果 Previous Value 为零或缺失(NaN),则结果将为 NaN。

df['pct_change'] = df['value'].pct_change()

.pct_change() 方法有多个参数,可以根据需要进行调整:

  • periods:指定用于计算百分比变化的滞后期数。默认值为 1,表示计算当前值与前一个值之间的变化。

  • fill_method:指定如何处理缺失值(NaN)。默认值为 'pad',即使用前向填充方法。

  • limit:指定在前向填充时的最大填充次数。仅当 fill_method='pad'ffill 时有效。

  • freq:指定重采样频率,适用于时间序列数据。


自然排序函数natsort

将1、10、2、33、4 排序为 1、2、4、10、33

import natsort as ns

ns.natsorted(num_list,reverse=True)

data.sort_values(day_cut,key=lambda val:np.argsort(index_natsorted(val)))

累积函数

cumsum、cumprodcummaxcummin

计算序列中前n个数的累积 和、乘积、最大值、最小值

Isinstance查看一个对象是否是指定类的实例

if isinstance(num, int):
    return int(num)

dropna 过滤NaN函数

对于dataframe:

df.drop()会丢弃掉 至少有一个NaN的行
df.drop(how='all')会丢弃掉 全部为NaN的行
df.dropna(axis=1,how='all')会丢弃掉 全部为NaN的列
df.dropna(axis=0,subset = [1])会丢弃掉 "1"列中 有NaN的行

\

对于Series:默认丢弃含有缺失值的行。

%timeit 计时,查看语句运行时间

%timeit  运行语句

执行多次,取平均性能

Shuffle  把数据随机打散

Shuffle(df)

drop_duplicates去重详解

根据数据的不同情况及处理数据的不同需求,通常会分为两种情况,一种是去除完全重复的行数据,另一种是去除某几列重复的行数据,就这两种情况可用下面的代码进行处理。

1. 去除完全重复的行数据

data.drop_duplicates(inplace=True)  (不需要重新赋值)

2. 去除某几列重复的行数据

data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)

subset: 列名,可选,默认为None

keep: {‘first’, ‘last’, False}, 默认值 ‘first’

  • first: 保留第一次出现的重复行,删除后面的重复行。
  • last: 删除重复项,除了最后一次出现。
  • False: 删除所有重复项。

inplace:布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。(inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。)

.values.tolist() 数组转列表

 

strftime('%y-%m-%d')与dt.date 时间

strftime(’%y-%m-%d’)、dt.date都可以将2020-02-02 14:01:01转化为2020-02-02,但如果有Nan值strftime(’%y-%m-%d’)将报错,dt.date不会报错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值