我有一个带有一些时间序列的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) 我有一个numpy数组,我想检查它是否已排序.
>>> a = np.array([1,2,3,4,5])
array([1, 2, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud) 我有一些包含一些列的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) 我想大致了解何时可以期望编译器对循环进行矢量化,以及何时值得我展开循环以帮助它决定使用矢量化。
我知道细节非常重要(什么编译器,什么编译选项,什么架构,如何在循环中编写代码等),但我想知道是否有一些针对现代编译器的通用指南。
我将更具体地给出一个简单循环的示例(代码不应该计算任何有用的东西):
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) 我需要在Pandas索引中找到标签的整数位置.我知道我可以使用get_loc方法,但后来我发现了searchsorted.只是想知道我是否应该使用后者来提高速度,因为我需要搜索数以千计的标签.
我有两只熊猫.系列......
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]
我想找到一种通用解决方案,以指定数量的行或列对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) 我有一个数据帧,我想将函数应用于每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) 我有一个像这样的字符串:
>>> 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)