pandas高级用法
一、分类
1.使用转换函数:astype('category')
df['fruit'] = df['fruit'].astype('category')
2.直接创建分组
方式一:
my_categories = pd.Categorical(['foo', 'bar', 'baz', 'foo', 'bar'])
方式二:
categories = ['foo', 'bar', 'baz']
codes = [0, 1, 2, 0, 0, 1]
my_cats_2 = pd.Categorical.from_codes(codes, categories,ordered=True)
二、分类计算
category在计算过程中会有更好的表现。
cat_s.cat.codes :分类的编码,用数字表示分类数据
cat_s.cat.categories:分的类别
cat_s.cat.set_categories:重新设定分类标准
actual_categories = ['a', 'b', 'c', 'd', 'e']
cat_s2 = cat_s.cat.set_categories(actual_categories)
cat_s.value_counts():统计值的个数
cat_s3 = cat_s[cat_s.isin(['a', 'b'])] :分类筛选
cat_s3.cat.remove_unused_categories():删除无用的分类
pd.get_dummies(cat_s):创建分类虚拟矩阵
三、group.transform(Function)
#作用:分组数据每一个数据都显示运行的结果。如求平均值,则每组的每个值都显示平均值
四、时间序列分组
方式一:
df.set_index('time').resample('5min').count()
方式二:
time_key = pd.TimeGrouper('5min')
resampled = (df2.set_index('time').groupby(['key', time_key]).sum())
五、连续的方法操作
方式一:
result = (load_data()[lambda x: x.col2 < 0].assign(col1_demeaned=lambda x: x.col1 - x.col1.mean()).groupby('key').col1_demeaned.std())
可以使用【lambda函数筛选行】和assign增加赋值列来减少中间的环节
方式二:pip函数:将上一个计算结果传入下一个pip中
def group_demean(df, by, cols):
result = df.copy()
g = df.groupby(by)
for c in cols:
result[c] = df[c] - g[c].transform('mean')
return result
result = (df[df.col1 < 0].pipe(group_demean, ['key1', 'key2'], ['col1']))
浙公网安备 33010602011771号