【问题标题】:Python : get random ten values from a pandas dataframe [duplicate]Python:从熊猫数据框中获取随机十个值[重复]
【发布时间】:2017-06-01 03:33:43
【问题描述】:

我正在尝试构建一种算法来查找集群数量。我需要从数据集中分配随机点作为初始均值。

我首先尝试了以下代码:

mu=random.sample(df,10) 

它给出的索引超出范围错误。

我把它转换成一个 numpy 数组然后做了

mu=random.sample(np.array(df).tolist(),10)

不是给出 10 个值作为平均值,而是给了我 10 个值数组。

如何从数据框中获取 10 个值来初始化为 10 个集群的平均值?

【问题讨论】:

    标签: python pandas numpy random


    【解决方案1】:

    我觉得你需要DataFrame.sample:

    mu = df.sample(10) 
    

    示例:

    np.random.seed(100)
    df = pd.DataFrame(np.random.randint(10, size=(20,3)), columns=list('abc'))
    print (df)
        a  b  c
    0   8  8  3
    1   7  7  0
    2   4  2  5
    3   2  2  2
    4   1  0  8
    5   4  0  9
    6   6  2  4
    7   1  5  3
    8   4  4  3
    9   7  1  1
    10  7  7  0
    11  2  9  9
    12  3  2  5
    13  8  1  0
    14  7  6  2
    15  0  8  2
    16  5  1  8
    17  1  5  4
    18  2  8  3
    19  5  0  9
    
    mu = df.sample(10)
    print (mu)
        a  b  c
    11  2  9  9
    1   7  7  0
    8   4  4  3
    5   4  0  9
    2   4  2  5
    19  5  0  9
    13  8  1  0
    14  7  6  2
    0   8  8  3
    9   7  1  1
    

    【讨论】:

      【解决方案2】:

      使用numpy.random.choice

      df.iloc[np.random.choice(np.arange(len(df)), 10, False)]
      

      numpy.random.permutation

      df.loc[np.random.permutation(df.index)[:10]]
      
          a  b  c
      11  2  9  9
      1   7  7  0
      16  5  1  8
      15  0  8  2
      17  1  5  4
      19  5  0  9
      10  7  7  0
      8   4  4  3
      6   6  2  4
      14  7  6  2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-29
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        • 2022-01-11
        • 2021-01-19
        • 1970-01-01
        相关资源
        最近更新 更多