gpt4 book ai didi

python - 与均值成正比增加和减少数据系列

转载 作者:行者123 更新时间:2023-12-01 07:35:35 25 4
gpt4 key购买 nike

我在 Pandas DataFrame 中有一个降水数据系列,其索引为 2009-2018 年之间的日期 (3652)。我正在尝试找到一种方法,以给定的百分比减少或增加累积降水量相对于平均值的比例(值<平均值则减少,值>平均值则增加)。

我成功做到了什么

制作一个仅包含非零值的列表,对其进行排序,并根据平均值的位置按比例增加或减少值。像这样:

enter image description here

蓝线代表原始值。橙色线表示 200%(作为清晰的示例)增加和减少(现在存在负值,但百分比为 20% 时不会发生)。平均值为 4.65,在本例中位于 1261。

问题现在我不想对如下所示的数据框执行此操作,而是保留所有降水值。

[3652 rows x 1 columns]
Precipitation
2009-01-01 0.000000
2009-01-02 0.600000
2009-01-03 0.000000
2009-01-04 0.900000
2009-01-05 2.000000
2009-01-06 0.000000
...

问题有人熟悉如何增加或减少与平均值成比例的值。这样最高值和最低值实际增加和减少 20%,但所有值之间成比例。

最佳答案

假设您的 y 数据在 x 变大时总是会增长。否则您需要先对数据进行排序。

首先,您需要根据 df 形状创建具有百分比比例的列。然后计算新值。

给你:

=^..^=

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np


# create test data
x = np.arange(1,20,1)
y = x**0.1

df = pd.DataFrame(y, columns=['data'])

# find value for proportion shape
def proportion_value(df):
for i in np.arange(0.1, 100, 0.1):
if len(df)-1 < i < len(df):
return i


percentage = 20
# load proportion
df['proportion'] = np.arange(-percentage, percentage, (percentage*2)/proportion_value(df))/100

# calculate new data
df['new_data'] = df['data'] + (df['data']*df['proportion'])

# plot data
df[['data', 'new_data']].plot()
plt.show()

输出:

enter image description here

关于python - 与均值成正比增加和减少数据系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57004159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com