使用:
import pandas as pd
df = pd.DataFrame({'a':[1,2,3,4,5,12,14,121,131,298,299,1001]})
print df.a.mean()
返回所有数字的平均值:
157.583333333
一半的数字小于100.我想知道是否有办法将数字分解为类别(基本上是对它们进行分类)。我将指定要对数字进行分类的组数,函数将返回一个列表,其中每个数字都替换为相应类别的索引。因此,小于100的数字将被赋予整数类别1.然后,100-200的数字将被赋予类别2等等。基本上某种舍入函数将数字四舍五入到值范围内:从0到100,从100.1到200.0等等
答案 0 :(得分:3)
import pandas as pd
df = pd.DataFrame({'a':[1,2,3,4,5,12,14,121,131,298,299,1001]})
df['category'] = df['a'] // 100 + 1
print(df[['a', 'category']])
a category
0 1 1
1 2 1
2 3 1
3 4 1
4 5 1
5 12 1
6 14 1
7 121 2
8 131 2
9 298 3
10 299 3
11 1001 11
答案 1 :(得分:2)
使用pd.cut
。 bins=
参数允许您定义要获取的类别数。结果是带有bin范围的系列:
pd.cut(df.a, bins=10)
Out[156]:
0 (0, 101]
1 (0, 101]
2 (0, 101]
3 (0, 101]
4 (0, 101]
5 (0, 101]
6 (0, 101]
7 (101, 201]
8 (101, 201]
9 (201, 301]
10 (201, 301]
11 (901, 1001]
Name: a, dtype: category
Categories (10, object): [(0, 101] < (101, 201] < (201, 301] < (301, 401] ... (601, 701] < (701, 801] < (801, 901] < (901, 1001]]