小编Tha*_*yen的帖子

Pandas:基于局部最小值-最大值的数据锯齿形分割

我有一个时间序列数据。生成数据

date_rng = pd.date_range('2019-01-01', freq='s', periods=400)
df = pd.DataFrame(np.random.lognormal(.005, .5,size=(len(date_rng), 3)),
                  columns=['data1', 'data2', 'data3'],
                  index= date_rng)
s = df['data1']
Run Code Online (Sandbox Code Playgroud)

我想创建一条连接局部最大值和局部最小值的锯齿形线,它满足在 y 轴上|highest - lowest value|每条锯齿形线必须超过前一个距离的百分比(比如 20%)的条件之字形线,以及预先设定的值 k(比如 1.2)

我可以使用以下代码找到局部极值:

# Find peaks(max).
peak_indexes = signal.argrelextrema(s.values, np.greater)
peak_indexes = peak_indexes[0]

# Find valleys(min).
valley_indexes = signal.argrelextrema(s.values, np.less)
valley_indexes = valley_indexes[0]
# Merge peaks and valleys data points using pandas.
df_peaks = pd.DataFrame({'date': s.index[peak_indexes], 'zigzag_y': s[peak_indexes]})
df_valleys = pd.DataFrame({'date': s.index[valley_indexes], 'zigzag_y': s[valley_indexes]})
df_peaks_valleys = pd.concat([df_peaks, df_valleys], axis=0, ignore_index=True, sort=True)

# …
Run Code Online (Sandbox Code Playgroud)

python time-series pandas technical-indicator

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

在 Keras 中为 flow_from_directory 使用多个目录

我的场景是我们有多个拥有自己数据的对等点,位于不同的目录中,具有相同的子目录结构。我想使用这些数据训练模型,但是如果我将它们全部复制到一个文件夹中,我将无法跟踪哪些数据来自谁(偶尔也会创建新数据,因此不适合保留复制文件每次)我的数据现在存储如下:

-user01
-user02
-user03
...
Run Code Online (Sandbox Code Playgroud)

(它们都有相似的子目录结构)

我已经搜索了解决方案,但我只在这里这里找到了多输入案例,它们将多个输入连接成 1 个单个并行输入,这不是我的情况。

我知道flow_from_directory()一次只能由 1 个目录提供,那么如何构建一个可以一次由多个目录提供的自定义目录?

如果我的问题是低质量的,请提供有关如何改进它的建议,我也在 keras 的 github 上进行了搜索,但没有找到任何我可以适应的内容。

谢谢你。

python keras tensorflow

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

为Keras编写自定义数据生成器

我将每个数据点存储在.npy文件中,并带有shape=(1024,7,8)。我想将它们加载到通过类似的方式Keras模型ImageDataGenerator,所以我写和尝试不同的自定义的发电机,但他们没有工作,这里是一个我改编自

def find(dirpath, prefix=None, suffix=None, recursive=True):
    """Function to find recursively all files with specific prefix and suffix in a directory
    Return a list of paths
    """
    l = []
    if not prefix:
        prefix = ''
    if not suffix:
        suffix = ''
    for (folders, subfolders, files) in os.walk(dirpath):
        for filename in [f for f in files if f.startswith(prefix) and f.endswith(suffix)]:
            l.append(os.path.join(folders, filename))
        if not recursive:
            break
    l
    return l

def generate_data(directory, batch_size):
    i = 0
    file_list …
Run Code Online (Sandbox Code Playgroud)

python generator keras

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

Python ValueError:池未在异步多处理中运行

我有一个简单的代码:

path = [filepath1, filepath2, filepath3]

def umap_embedding(filepath):
    file = np.genfromtxt(filepath,delimiter=' ')
    if len(file) > 20000:
        file = file[np.random.choice(file.shape[0], 20000, replace=False), :]
    neighbors = len(file)//200

    if neighbors >= 2:
        neighbors = neighbors
    else:
        neighbors = 2

    embedder = umap.UMAP(n_neighbors=neighbors,
                         min_dist=0.1,
                         metric='correlation', n_components=2)
    embedder.fit(file)
    embedded = embedder.transform(file)
    name = 'file'
    np.savetxt(name,embedded,delimiter=",")

if __name__ == '__main__':
    p = Pool(processes = 20)
    start = time.time()
    for filepath in path:
        p.apply_async(umap_embedding, [filepath])
        p.close()
        p.join()

    print("Complete")
    end = time.time()
    print('total time (s)= ' + str(end-start)) …
Run Code Online (Sandbox Code Playgroud)

python pool multiprocessing

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

Concat python 数据帧,删除重复项并保留行原点记录

我有多个数据框,示例数据:

df1:

user_id    username firstname lastname 
 123         abc      abc       abc
 456         def      def       def 
 789         ghi      ghi       ghi
Run Code Online (Sandbox Code Playgroud)

df2:

user_id     username  firstname lastname
 111         xyz       xyz       xyz
 456         def       def       def
 234         mnp       mnp       mnp
Run Code Online (Sandbox Code Playgroud)

df3:

user_id     username  firstname lastname
 789         ghi       ghi       ghi       
 456         def       def       def
 222         uwv       uwv       uwv       
Run Code Online (Sandbox Code Playgroud)

我想连接这些数据框,删除重复的行,并通过添加更多列来跟踪行的来源。期望的输出:

df1:

user_id    username firstname lastname df1 df2 df3
 123         abc       abc       abc    1   0   0
 456         def       def       def    1   1   1
 789         ghi       ghi       ghi    1 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

将多个子串匹配模式提取到列中

我的熊猫数据框有这样的字符串

A=1;B=3;C=c6
A=2;C=c7;D=8
Run Code Online (Sandbox Code Playgroud)

我想将每个字段中的值提取到单独的列中,然后将字段名称用作这样的列

A    B    C    D
1    3    c6   NaN
2    NaN  c7   8
Run Code Online (Sandbox Code Playgroud)

我尝试拆分df.str.split('=|;', expand=True)但它将值和字段拆分为单独的列

我也尝试过使用,df.str.extract(r'=\s*([^\.]*)\s*\;', expand=True)但它只返回第一次出现的值。

感谢您的帮助

python regex pandas

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