Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对CSV文件中的每四个元素求平均值_Python_Pandas_Csv_Average - Fatal编程技术网

Python 对CSV文件中的每四个元素求平均值

Python 对CSV文件中的每四个元素求平均值,python,pandas,csv,average,Python,Pandas,Csv,Average,我有一个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文件,比如说$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文件。

使用索引整数除法对4个值的组和聚合
平均值

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)
    

您只生成9个数字,而不是100个。
range
stop
参数是生成的数,
random.randint
的参数是从中采样一个随机数的范围(包括)。
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)