对 CSV 文件中的每四个元素进行平均

Averaging out every four elements in a CSV file

我有一个 CSV 文件,其中包含 $n=100$ 个元素。所以文件看起来像一个 $n$ 维向量。问题是:我怎样才能平均每 4 个元素并将结果保存在新的 csv 文件中?

例如我生成一个随机数列表:

import random
my_random_list = []
for i in range(0,9):
    n = random.randint(1,100)
    my_random_list.append(n)

df = pd.DataFrame(my_random_list)
df.to_csv('my_csv.csv', index=False, header=None)

这和我的代码很相似。现在,我想创建一个新的 csv(因为我已经有了 csv 格式的数据),我在其中平均并保存前 4 个元素,然后是接下来的 4 个,等等。所以我最终会得到一个只有 25 个元素的 csv 文件.

DataFrame.groupby 与索引的整数除法一起用于 4 个值的组并聚合 mean:

np.random.seed(2021)

df = pd.DataFrame({'a':np.random.randint(1,10, size=10)})
print (df)
   a
0  5
1  6
2  1
3  7
4  6
5  9
6  7
7  7
8  7
9  7

df1 = df.groupby(df.index // 4).mean()
print (df1)
      a
0  4.75
1  7.25
2  7.00

详情:

print (df.index // 4)
Int64Index([0, 0, 0, 0, 1, 1, 1, 1, 2, 2], dtype='int64')

总计:

df = pd.read_csv(file, header=None)
df1 = df.groupby(df.index // 4).mean()
df1.to_csv('my_csv.csv', index=False, header=None)
    
import pandas as pd
import random
import csv

# FIRST PART -- GENERATES THE ORIGINAL CSV FILE

my_random_list = []
for i in range(0,100):
    n = random.randint(1,100)
    my_random_list.append(n)

df = pd.DataFrame(my_random_list)
df.to_csv('my_csv.csv', index=False, header=None)

# SECOND PART -- POPULATES A LIST WITH THE CONTENTS OF THE
#                ORIGINAL CSV FILE

file_CSV = open('my_csv.csv')
data_CSV = csv.reader(file_CSV)
list_CSV = list(data_CSV)


# THIRD PART -- GENERATES A NEW LIST CONTAINING
#               THE AVERAGE OF EVERY FOURTH ELEMENT
#               AND ITS THREE PREDECESSORS

new_list = []
for i in range(0,len(list_CSV)):
    if(i%4==0):
        s =     int(list_CSV[i+0][0])
        s = s + int(list_CSV[i+1][0])
        s = s + int(list_CSV[i+2][0])
        s = s + int(list_CSV[i+3][0])
        s = s/4
        new_list.append(s)
    i = i + 1

# FOURTH PART -- GENERATES A NEW CSV

df = pd.DataFrame(new_list)
df.to_csv('new_csv.csv', index=False, header=None)