pandas 切分

%%

import numpy as np

import pandas as pd

%%

df = pd.read_excel(‘./data/demo_04.xlsx’)

df.head()

%% [markdown]

数据偏移

%%

1.shift函数

periods, 偏移数目

freq, 时间频率,Y,Q,M,D,H,T/min,S

axis, 轴,0为行,1为列

fill_value, 填充空值

%%

日期是连续的

df[‘上期销量’] = df[‘销量’].shift(periods=1)

df[‘销量增长率’] = (df[‘销量’] – df[‘上期销量’])/df[‘上期销量’]

df[‘销量增长率’] = df[‘销量增长率’].apply(

lambda x: np.nan if pd.isnull(x) else ‘{:.2%}’.format(x))

df.head()

%%

日期是不连续的,设置时间序列字段为行索引

df = df.set_index(‘日期’)

df[‘上期销量’] = df[‘销量’].shift(periods=1, freq=’D’)

df[‘销量增长率’] = (df[‘销量’] – df[‘上期销量’])/df[‘上期销量’]

df[‘销量增长率’] = df[‘销量增长率’].apply(

lambda x: np.nan if pd.isnull(x) else ‘{:.2%}’.format(x))

df.head()

%%

2.diff函数,偏移后计算差异值

df[‘差异diff’] = df[‘销量’].diff(periods=1)

df.head()

%%

3.pct_change函数,偏移后计算差异百分比

df[‘pct_change’] = df[‘销量’].pct_change(periods=1, freq=’D’)

df.head()

%%

4.rolling函数,移动/滚动计算,计算近3天平均销量

window, 窗口范围

min_periods, 解决窗口大小不足的统计问题

df[‘近3天平均销量’] = df[‘销量’].rolling(window=3, min_periods=1).mean()

df.head(10)

%% [markdown]

数据切分

%%

Excel透视表创建组合

等距分箱(每组间距一致),等频分组(每组频数一致)

自定义间距分箱(指定间距分箱)

自定义频数分箱(指定分位点分箱)

cut、qcut

%%

tb = pd.DataFrame(data=np.random.randint(1, 120, 100), columns=[‘成绩’])

tb.head()

%% [markdown]

cut函数

%%

1.指定箱数,等距分箱,10组

x, Series对象

bins, 箱数/组数,或指定间距节点的列表

right=True, 左开右闭

right=False, 左闭右开

labels, 分箱标签

tb[‘等距分箱’] = pd.cut(x=tb[‘成绩’], bins=10, right=False)

tb[‘等距分箱’].value_counts()

%%

2.指定区间/间距分箱

tb[‘指定区间分箱’] = pd.cut(

x=tb[‘成绩’],

bins=[0, 60, 80, 100, 120],

right=False,

labels=[‘不及格’, ‘一般’, ‘良好’, ‘优秀’])

tb[‘指定区间分箱’].value_counts()

%% [markdown]

qcut函数

%%

3.指定分位数,等频分箱,4组

每组的频数不一定完全一致,频数尽量接近一致

x, Series对象

q, 箱数/组数,或指定分位数分箱的节点列表([0,1))

labels, 分箱标签

tb[‘等频分箱’] = pd.qcut(x=tb[‘成绩’], q=4)

tb[‘等频分箱’].value_counts()

%%

4.指定分位数区间分箱

tb[‘指定分位数区间分箱’] = pd.qcut(

x=tb[‘成绩’],

q=[0, 0.3, 0.6, 0.8, 1],

labels=[‘不及格’, ‘一般’, ‘良好’, ‘优秀’])

tb[‘指定分位数区间分箱’].value_counts()

%%

求指定分数点的值

tb[‘成绩’].quantile(0.3)

tb[‘成绩’].quantile(0.6)

tb[‘成绩’].quantile(0.8)

tb[‘成绩’].quantile(1)

%%

Original: https://blog.csdn.net/si6354257/article/details/125213907
Author: 月下代码
Title: pandas 切分

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/741526/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球