小编luc*_*uca的帖子

Python scipy/numpy/pandas中的时间序列的分层聚类?

我有一个带有一些时间序列的DataFrame.我从这些时间序列中创建了一个相关矩阵,我想在这个相关矩阵上创建一个层次聚类.我怎样才能做到这一点?

#
# let't pretend this DataFrame contains some time series
#
df = pd.DataFrame((np.random.randn(150)).reshape(10,15))

         0         1         2               13           14    
0  0.369746  0.093882 -0.656211 ....  -0.596936  0  0.095960  
1  0.641457  1.120405 -0.468639 ....  -2.070802  1 -1.254159  
2  0.360756 -0.222554  0.367893 ....   0.566299  2  0.932898  
3  0.733130  0.666270 -0.624351 ....  -0.377017  3  0.340360  
4 -0.263967  1.143818  0.554947 ....   0.220406  4 -0.585353  
5  0.082964 -0.311667  1.323161 ....  -1.190672  5 -0.828039  
6  0.173685  0.719818 -0.881854 ....  -1.048066  6 -1.388395  
7  0.118301 -0.268945  0.909022 …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy pandas

16
推荐指数
1
解决办法
2万
查看次数

检查numpy数组是否已排序

我有一个numpy数组,我想检查它是否已排序.

>>> a = np.array([1,2,3,4,5])
array([1, 2, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)

python numpy

12
推荐指数
3
解决办法
6524
查看次数

DataFrame:添加列,其值是现有列的分位数/排名?

我有一些包含一些列的DataFrame.我想添加一个新列,其中每个行值是一个现有列的分位数等级.

我可以使用DataFrame.rank对列进行排名,但后来我不知道如何获取此排名值的分位数,并将此分位数添加为新的colunm.

示例:如果这是我的DataFrame

df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]), columns=['a', 'b'])

   a    b
0  1    1
1  2   10
2  3  100
3  4  100
Run Code Online (Sandbox Code Playgroud)

我想知道b列的分位数(使用2个分位数).我期待这个结果:

   a    b  quantile
0  1    1    1
1  2   10    1
2  3  100    2
3  4  100    2
Run Code Online (Sandbox Code Playgroud)

python pandas ranking-functions

7
推荐指数
1
解决办法
7037
查看次数

矢量化:什么时候值得手动展开循环?

我想大致了解何时可以期望编译器对循环进行矢量化,以及何时值得我展开循环以帮助它决定使用矢量化。

我知道细节非常重要(什么编译器,什么编译选项,什么架构,如何在循环中编写代码等),但我想知道是否有一些针对现代编译器的通用指南。

我将更具体地给出一个简单循环的示例(代码不应该计算任何有用的东西):

    double *A,*B; // two arrays
    int delay = something
    [...]


    double numer = 0, denomB = 0, denomA = 0;
    for (int idxA = 0; idxA < Asize; idxA++)
    {
        int idxB = idxA + (Bsize-Asize)/2 + delay;
        numer  += A[idxA] * B[idxB];
        denomA += A[idxA] * A[idxA];
        denomB += B[idxB] * B[idxB];
    }
Run Code Online (Sandbox Code Playgroud)

我可以期望编译器对循环进行矢量化吗?或者重写如下代码是否有用?

    for ( int idxA = 0; idxA < Asize; idxA+=4 )
    {
        int idxB = idxA + (Bsize-Asize)/2 …
Run Code Online (Sandbox Code Playgroud)

c c++ vectorization loop-unrolling

5
推荐指数
1
解决办法
1072
查看次数

搜索是否比get_loc更快,以在DataFrame索引中查找标签位置?

我需要在Pandas索引中找到标签的整数位置.我知道我可以使用get_loc方法,但后来我发现了searchsorted.只是想知道我是否应该使用后者来提高速度,因为我需要搜索数以千计的标签.

python pandas

4
推荐指数
1
解决办法
467
查看次数

如何将两个pandas Series连接成一个具有交错值的pandas系列?

我有两只熊猫.系列......

import pandas as pd
import numpy as np

length = 5
s1 = pd.Series( [1]*length ) # [1, 1, 1, 1, 1]
s2 = pd.Series( [2]*length ) # [2, 2, 2, 2, 2]
Run Code Online (Sandbox Code Playgroud)

...我希望将它们连接在一起,使用前两个系列中的交错值.类似的东西:[1,2,1,2,1,2,1,2,1,2]

python numpy pandas

3
推荐指数
1
解决办法
170
查看次数

按N列或N行分组的DataFrame

我想找到一种通用解决方案,以指定数量的行或列对DataFrame进行分组。示例数据框:

df = pd.DataFrame(0, index=['a', 'b', 'c', 'd', 'e', 'f'], columns=['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7'])

   c1  c2  c3  c4  c5  c6  c7
a   0   0   0   0   0   0   0
b   0   0   0   0   0   0   0
c   0   0   0   0   0   0   0
d   0   0   0   0   0   0   0
e   0   0   0   0   0   0   0
f   0   0   0   0   0   0   0
Run Code Online (Sandbox Code Playgroud)

例如,我想一次按2行分组,并应用均值或类似函数。我还想知道如何一次按N列分组并应用函数。

按时间预期输出按2行分组:

   c1  c2  c3  c4  c5  c6 …
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

2
推荐指数
1
解决办法
1680
查看次数

按X列对数据帧进行分组

我有一个数据帧,我想将函数应用于每2列(或3,它的变量).

例如,如下所示DataFrame,我想将均值函数应用于列0-1,2-3,4-5,...... 28-29

d = pd.DataFrame((np.random.randn(360)).reshape(12,30))

           0         1  ...       17        18        19            29 
0   0.590293 -2.794911 ...  0.772830 -1.389820 -1.696832 ...  0.615549 
1   0.115954  2.179996 ... -0.764384 -0.610713 -0.289050 ... -1.130803 
2   0.209405  0.381398 ... -0.317797  0.261590  2.502581 ...  1.750126 
3   2.828746  0.831299 ... -0.679128 -1.255643  0.245522 ... -0.612011 
4   0.625284  1.141448 ...  0.391047 -1.262303 -0.094523 ... -3.643543 
5   0.493923  1.601924 ... -0.935102 -2.416869  0.112278 ... -0.001863 
6  -1.213347  0.396682 ...  0.671210  0.122041 -1.469256 ...  1.825214 
7   0.026695 …
Run Code Online (Sandbox Code Playgroud)

python pandas

1
推荐指数
1
解决办法
80
查看次数

使用自定义分隔符拆分字符串,尊重并保留引号(单引号或双引号)

我有一个像这样的字符串:

>>> s = '1,",2, ",,4,,,\',7, \',8,,10,'
>>> s
'1,",2, ",,4,,,\',7, \',8,,10,'
Run Code Online (Sandbox Code Playgroud)

我想使用不同的分隔符(不仅仅是空格)来分割它,并且我还想尊重和保留引号(单引号或双引号)。

s按分隔符拆分时的预期结果,

['1', ',2, ', '', '4', '', '', ',7, ', '8', '', '10', '']
Run Code Online (Sandbox Code Playgroud)

python regex

1
推荐指数
1
解决办法
766
查看次数