Используйте pandas, чтобы рассчитать среднее значение с десятичными приращениями - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть pandas фрейм данных, для которого я хочу вычислить среднее значение. Чтобы связать мои данные, вместо того, чтобы использовать количество корзин, я ищу решение (возможно, встроенное), для которого я мог бы указать размер корзины. Например, из этих данных:

                A     B
               0.1   4.2
               0.15  2.0
               0.17  3.0 
               0.2   6.4
               0.3   1.0
               0.35  5.0
               0.4   10.0
               0.43  2.0
               0.5   8.0

Я хочу указать bin_size=0.1 для столбца A, чтобы получить следующий кадр данных в качестве среднего значения для моего столбца:

                   A       B                          
    (0.1,0.2)     0.14     3.06
    (0.3,0.4)     0.35     5.33
    (0.4,0.5)     0.44     6.66

Если я должен был указать Количество бинов, я бы решить это:

    groups = df.groupby(pd.cut(df.A, bins))
    df2 = pd.DataFrame(groups.mean())

Но, как я уже сказал, я ищу решение, в котором я указываю размер корзины. Возможно, важно подчеркнуть, что в моем наборе данных содержится 33961 строка.

1 Ответ

1 голос
/ 25 апреля 2020

Вы можете определить bins, используя массив numpy, одинаково разделенный на 0,1

ranges = np.arange(df.A.min() - 0.1, df.A.max() + 0.1, 0.1)  #[0, 0.1, 0.2, 0.3 ...] 
groups = df.groupby(pd.cut(df.A, ranges))
groups.mean()


#               A           B
#  A        
# (0.0, 0.1]    0.100000    4.2
# (0.1, 0.2]    0.173333    3.8
# (0.2, 0.3]    0.300000    1.0
# (0.3, 0.4]    0.375000    7.5
# (0.4, 0.5]    0.465000    5.0
...