代码解读

data=pd.read_csv('datingTestSet2.txt',sep='\t')
print(data.shape)
data.head()

飞行里程 视频游戏消耗时间 消费冰淇淋公斤数 感兴趣程度
0 40920 8.326976 0.953952 3
1 14488 7.153469 1.673904 2
2 26052 1.441871 0.805124 1
3 75136 13.147394 0.428964 1
4 38344 1.669788 0.134296 1

group=data.感兴趣程度.unique()
def group():
    df=[]
    group=data.感兴趣程度.unique()
    for x in group:
        a=data.飞行里程[data.感兴趣程度==x]
        df.append(a)
    return df
box1,box2,box3=group()[0],group()[1],group()[2]

我有点不明白group()函数是怎么执行的,麻烦大家帮忙解释下group()函数里的几句话是什么意思。执行完后,怎么自动分好组了。我看了group=data.感兴趣程度.unique()执行完后group={3,2,1},就是想不明白for循环。

讨论数量: 3
Jason990420
group=data.感兴趣程度.unique()

只取data.感兴趣程度中唯一的值, 不重复, 結果 group = [3, 2, 1]

data.感兴趣程度==x

不会返回一布林值, 而是一个布林值array, 每个元素==x

x=3: [True, False, False, False, False]
x=2: [False, True, False, False, False]
x=1: [False, False, True, True, True]
data.飞行里程[data.感兴趣程度==x]

data.感兴趣程度==x 将作为索引值, True时才取该元素

x=3: [40920]
x=2: [14488]
x=1: [26052, 75136, 38344]
a=data.飞行里程[data.感兴趣程度==x]
df.append(a)

group函数返回

df: [[40920], [14488], [26052, 75136, 38344]]
box1: group()[0], [40920]
box2: group()[1], [14488]
box3: group()[2], [26052, 75136, 38344]
box1,box2,box3 = group()[0],group()[1],group()[2]

这行不要这样写, group()跑了三次, 结果都是一样的

box1,box2,box3 = group()

还有函数名用group, 变量名也用group, 容易混沌出错

5年前 评论

@Jason990420

我能理解为for x in group:其它是执行3次, a=data.飞行里程[data.感兴趣程度==x] 是自动扫描整个表,主要是不明白程序是怎么执行的。 df.append(a)

5年前 评论
Jason990420

不清楚你问的是啥重点, append就这样加到后面啊
找出结果1, 放进df => [结果1]
找出结果2, 放进df => [结果1, 结果2]
找出结果3, 放进df => [结果1, 结果2, 结果3]

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!