随机数据帧和与平均值

2024-04-19 06:32:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个随机数据帧:

df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))

我试着运行10次。为了创建一个数据帧,它是10个随机数据帧的总和,然后除以10得到平均值。你知道吗


Tags: columns数据dataframedfsizenprandomlist
2条回答

一种解决方案是创建DataFrame列表,通过^{}连接在一起,并为每个第一级创建mean

np.random.seed(2019)

dfs = [pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD')) 
       for x in range(10)]

df = pd.concat(dfs, keys=range(10)).mean(level=0)
print (df)
       A      B      C      D
0  50.96  50.05  53.74  54.56
1  55.38  46.49  53.57  46.51
2  50.53  48.29  45.57  47.64
3  49.69  51.70  55.11  48.40
4  52.57  50.28  53.17  47.20
5  50.49  48.60  48.29  50.49
6  45.26  54.60  47.78  46.62
7  50.92  48.27  56.30  47.28
8  47.57  46.51  52.90  46.07
9  45.54  49.72  49.38  45.71

或者用10倍多的行创建DataFrame,创建MultiIndex,然后再次获得mean

np.random.seed(2019)

df = pd.DataFrame(np.random.randint(0,100,size=(100 * 10, 4)), 
                  columns=list('ABCD'), 
                  index=pd.MultiIndex.from_product([range(10), range(100)]))
df = df.mean(level=0)
print (df)
       A      B      C      D
0  50.96  50.05  53.74  54.56
1  55.38  46.49  53.57  46.51
2  50.53  48.29  45.57  47.64
3  49.69  51.70  55.11  48.40
4  52.57  50.28  53.17  47.20
5  50.49  48.60  48.29  50.49
6  45.26  54.60  47.78  46.62
7  50.92  48.27  56.30  47.28
8  47.57  46.51  52.90  46.07
9  45.54  49.72  49.38  45.71

下面是一个函数,它接受n—运行此操作的次数。你知道吗

def func(n):
    df_total = 0
    for i in range(n):
        df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
        # to add similar dataframes just use + operator
        df_total = df_total + df
    return df_total / n

相关问题 更多 >