python 用groupby之后生成新的数据框

Python014

python 用groupby之后生成新的数据框,第1张

最近在做一点点风控的东西,想把toad中的ks_bucket改修正下,原码里面是按得分的最大最小值划分的bucket,但我在实际的应用中想更个性化的划分节点去统计。

首先需要解决的一个问题是把0~1上的概率给划分到不同的区间,然后分别统计即可。

之前一直用groupby,分组后想count, sum,后变成df。在网上找了好几种方法,都没有成功,最后还是英文文档解决了我的问题。

这是划分好后的各列情况 , 第一列:概率,第二列:所属的区间, 第三列: 实际的label

我主要是 想把这三列 , 按第二列分组,统计各区间的总数,和label为1的数

用NamedAgg 即可把原来的分组变为数据框。

1、Series的创建

序列的创建主要有三种方式:

1)通过一维数组创建序列

import numpy as np, pandas as pd

arr1 = np.arange(10)

arr1

type(arr1)

s1 = pd.Series(arr1)

s1

type(s1)

2)通过字典的方式创建序列

dic1 = {'a':10,'b':20,'c':30,'d':40,'e':50}

dic1

type(dic1)

s2 = pd.Series(dic1)

s2

type(s2)

3)通过DataFrame中的某一行或某一列创建序列

这部分内容我们放在后面讲,因为下面就开始将DataFrame的创建。

2、DataFrame的创建

数据框的创建主要有三种方式:

1)通过二维数组创建数据框

arr2 = np.array(np.arange(12)).reshape(4,3)

arr2

type(arr2)

df1 = pd.DataFrame(arr2)

df1

type(df1)

2)通过字典的方式创建数据框

以下以两种字典来创建数据框,一个是字典列表,一个是嵌套字典。

dic2 = {'a':[1,2,3,4],'b':[5,6,7,8],

'c':[9,10,11,12],'d':[13,14,15,16]}

dic2

type(dic2)

df2 = pd.DataFrame(dic2)

df2

type(df2)