%%
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/
转载文章受原作者版权保护。转载请注明原作者出处!