我有下面的熊猫DataFrame。
import pandas as pd
df = pd.read_csv('filename.csv')
print(df)
A B C D
0 2 0 11 0.053095
1 2 0 11 0.059815
2 0 35 11 0.055268
3 0 35 11 0.054573
4 0 1 11 0.054081
5 0 2 11 0.054426
6 0 1 11 0.054426
7 0 1 11 0.054426
8 42 7 3 0.048208
9 42 7 3 0.050765
10 42 7 3 0.05325
....
问题是,数据自然是“集群”成组的,但是没有给出这些数据。从以上情况来看,行0-1是一个组,第2-3行是一个组,第4-7行是一个组,8-10行是一个组。
我得把这个信息归给你。一个人可以利用机器学习,然而,它是否有可能做到这只使用熊猫?
用户可以根据列的值来创建这些组吗?问题是数值不精确。对于第三个组,列B
有组1、2、1、1。
发布于 2016-06-29 01:09:50
一个纯熊猫的解决方案将涉及绑定,假设你们的值彼此接近,而且你们的垃圾箱大小足够大,可以进行集群变化,但小于集群值之间的距离。答案取决于你的数据。
二进制方法在熊猫中使用cut
函数。您提供了一个系列(或数组)和函数想要的回收箱数。该函数将系列的范围均匀地细分为给定数量的回收箱,并确定输入中的每个值落在何处。下面一组列的输出将是值落在哪个文件夹中,并将是您可以按照原始思路分组的内容。
对于大小为5的垃圾箱来说,实际情况是这样的
for col in df.columns:
binned_name = col + '_binned'
num_bins = np.ceil(df[col].max()/5)
df[binned_name] = pd.cut(df[col],num_bins,labels=False)
https://stackoverflow.com/questions/38088200
复制相似问题