在python中使用时间框架将数据拆分为组

在python中使用时间框架将数据拆分为组,python,python-2.7,pandas,dataframe,Python,Python 2.7,Pandas,Dataframe,我有一个名为df的数据帧,它类似于这样,但实际上是[9147行x 3列] indexID RngUni[m] PowUni[dB] 157203 1.292283 132 157201 1.271878 132 157016 1.285481 134 157404 1.305886 136 157500 1.353496 136 157524 1.251474 136 157227 1.292283

我有一个名为df的数据帧,它类似于这样,但实际上是[9147行x 3列]

indexID  RngUni[m]  PowUni[dB]
157203   1.292283      132
157201   1.271878      132
157016   1.285481      134
157404   1.305886      136
157500   1.353496      136
157524   1.251474      136
157227   1.292283      132
157543   1.339893      136
157903   1.353496      138
156928   1.299084      134
157373   1.299084      136
156937   1.414709      134
157461   1.353496      136
157718   1.360297      138
157815   1.326290      138
157806   1.271878      134
156899   1.360298      134
157486   1.414709      138
157628   1.271878      136
157405   1.299084      134
157244   1.299084      134
157522   1.258275      136
157515   1.367099      138
157086   1.305886      136
157602   1.251474      134
157131   1.265077      132
157170   1.380702      138
156904   1.360297      134
157209   1.401106      138
157018   1.265077      134
我试图做的是选择表中数据的某些值

df.plot(x='RngUni[m]',y='PowUni[dB]',kind='scatter')
给出:

假设主组是大多数数据点聚集的区域,我需要做的是选择主组中80%的点和主组外20%的点

我需要作为列表输出的所有点的索引。我该怎么做

需要一个集群示例。我想做的是选择圆内80%的点和圆外20%的点。

以下是我将如何完成这项任务:

from io import StringIO
import pandas as pd
from sklearn.cluster import KMeans

s = '''indexID  RngUni[m]  PowUni[dB]
157203   1.292283      132
157201   1.271878      132
157016   1.285481      134
157404   1.305886      136
157500   1.353496      136
157524   1.251474      136
157227   1.292283      132
157543   1.339893      136
157903   1.353496      138
156928   1.299084      134
157373   1.299084      136
156937   1.414709      134
157461   1.353496      136
157718   1.360297      138
157815   1.326290      138
157806   1.271878      134
156899   1.360298      134
157486   1.414709      138
157628   1.271878      136
157405   1.299084      134
157244   1.299084      134
157522   1.258275      136
157515   1.367099      138
157086   1.305886      136
157602   1.251474      134
157131   1.265077      132
157170   1.380702      138
156904   1.360297      134
157209   1.401106      138
157018   1.265077      134'''

ss = StringIO(s)
df = pd.read_csv(ss, sep=r"\s+")
kmeans = KMeans(n_clusters=2, random_state=0).fit(df.values[:,[1,2]])
df['labels']=kmeans.labels_
df['labels']=kmeans.labels_
df.labels.apply(lambda x: 'red' if x==1 else 'blue')

plt.scatter(x=df['RngUni[m]'], y=df['PowUni[dB]'], c=df['labels'])
输出:

只需更改聚类算法并使用参数即可获得所需的聚类和颜色


希望有帮助。

以下是我将如何完成这项任务:

from io import StringIO
import pandas as pd
from sklearn.cluster import KMeans

s = '''indexID  RngUni[m]  PowUni[dB]
157203   1.292283      132
157201   1.271878      132
157016   1.285481      134
157404   1.305886      136
157500   1.353496      136
157524   1.251474      136
157227   1.292283      132
157543   1.339893      136
157903   1.353496      138
156928   1.299084      134
157373   1.299084      136
156937   1.414709      134
157461   1.353496      136
157718   1.360297      138
157815   1.326290      138
157806   1.271878      134
156899   1.360298      134
157486   1.414709      138
157628   1.271878      136
157405   1.299084      134
157244   1.299084      134
157522   1.258275      136
157515   1.367099      138
157086   1.305886      136
157602   1.251474      134
157131   1.265077      132
157170   1.380702      138
156904   1.360297      134
157209   1.401106      138
157018   1.265077      134'''

ss = StringIO(s)
df = pd.read_csv(ss, sep=r"\s+")
kmeans = KMeans(n_clusters=2, random_state=0).fit(df.values[:,[1,2]])
df['labels']=kmeans.labels_
df['labels']=kmeans.labels_
df.labels.apply(lambda x: 'red' if x==1 else 'blue')

plt.scatter(x=df['RngUni[m]'], y=df['PowUni[dB]'], c=df['labels'])
输出:

只需更改聚类算法并使用参数即可获得所需的聚类和颜色


希望有帮助。

嗨!谢谢你的评论。我只是想知道你的图表中的两种不同颜色代表什么?如何输出所选点的索引列表?我刚刚阅读了关于kmeans()的链接,但我仍然不太明白如何输出聚集在一起的点列表。kmeans似乎有一个由某个决策边界线分割的部分。然而,我需要的可能不是直线分割,而是形状分割。我对我的问题进行了编辑,将其包括在内。@RuvenGuna如果您发布完整的数据,我可以向您展示如何更改聚类算法并获得所需的聚类。我使用KMeans只是为了演示这个想法。不幸的是,我不能这样做,因为我不允许上传整个数据。不过我还是设法解决了这个问题。谢谢你的帮助!你好谢谢你的评论。我只是想知道你的图表中的两种不同颜色代表什么?如何输出所选点的索引列表?我刚刚阅读了关于kmeans()的链接,但我仍然不太明白如何输出聚集在一起的点列表。kmeans似乎有一个由某个决策边界线分割的部分。然而,我需要的可能不是直线分割,而是形状分割。我对我的问题进行了编辑,将其包括在内。@RuvenGuna如果您发布完整的数据,我可以向您展示如何更改聚类算法并获得所需的聚类。我使用KMeans只是为了演示这个想法。不幸的是,我不能这样做,因为我不允许上传整个数据。不过我还是设法解决了这个问题。谢谢你的帮助!