промежуточная обработка данных в столбцах из файлов csv

#python #csv #average

#python #csv #среднее

Вопрос:

У меня проблема с добавлением и получением среднего значения для следующего файла csv с именами полей / столбцов

 node_code,throughput[Mbps],Data packets_sent,Data_packets lost,rts_cts_sent,rts_cts_lost,node_code,throughput[Mbps],Data packets_sent,Data_packets lost,rts_cts_sent,rts_cts_lost,node_code,throughput[Mbps],Data packets_sent,Data_packets lost,rts_cts_sent,rts_cts_lost
AP_A,111.277485,10618,0,10618,0,AP_B,111.287966,10619,0,10619,0,AP_C,111.287966,10618,0,10618,0
AP_A,111.287966,10619,0,10619,0,AP_B,111.287966,10618,0,10619,0,AP_C,111.287966,10619,0,10619,0
AP_A,111.287966,10619,0,10619,0,AP_B,111.287966,10619,0,10619,0,AP_C,111.298447,10619,0,10620,0
AP_A,111.277485,10618,0,10618,0,AP_B,111.277485,10618,0,10618,0,AP_C,111.298447,10620,0,10620,0
AP_A,111.267004,10617,0,10617,0,AP_B,111.277485,10618,0,10618,0,AP_C,111.287966,10619,0,10619,0
 

и вопрос в том, как я могу этого добиться, добавьте данные столбцов «пропускная способность [Мбит / с]», «Data packets_sent», «Data_packets lost», «rts_cts_sent», «rts_cts_lost» и создайте в конце файла строку со средними значениями, например:

 node_code,throughput[Mbps],Data packets_sent,Data_packets lost,rts_cts_sent,rts_cts_lost,node_code,throughput[Mbps],Data packets_sent,Data_packets lost,rts_cts_sent,rts_cts_lost,node_code,throughput[Mbps],Data packets_sent,Data_packets lost,rts_cts_sent,rts_cts_lost
AP_A,111.277485,10618,0,10618,0,AP_B,111.287966,10619,0,10619,0,AP_C,111.287966,10618,0,10618,0
AP_A,111.287966,10619,0,10619,0,AP_B,111.287966,10618,0,10619,0,AP_C,111.287966,10619,0,10619,0
AP_A,111.287966,10619,0,10619,0,AP_B,111.287966,10619,0,10619,0,AP_C,111.298447,10619,0,10620,0
AP_A,111.277485,10618,0,10618,0,AP_B,111.277485,10618,0,10618,0,AP_C,111.298447,10620,0,10620,0
AP_A,111.267004,10617,0,10617,0,AP_B,111.277485,10618,0,10618,0,AP_C,111.287966,10619,0,10619,0
average:
AP_A,(  ),(  ),(  ),(  ),(  ),AP_B,(  ),(  ),(  ),(  ),(  ),AP_C,(  ),(  ),(  ),(  ),(  )
 

заранее спасибо, и я действительно ценю помощь

Комментарии:

1. Excel и другие программы для работы с электронными таблицами могут сделать это довольно хорошо.

2. на самом деле, это метод, который я использовал, но он очень сложный, потому что мне нужно сделать это для сотни файлов, но спасибо, приятель

Ответ №1:

Вот предложение:

 import csv

# Collect data for determining the averages
with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    next(reader)  # Skip first row with headers
    # Initialise sums with first line of data
    sums = [item if item.startswith('AP_') else float(item)
            for item in next(reader)]
    # Sum up the rest of the numbers and count the number of rows with data
    for num, row in enumerate(reader, start=2):
        sums = [item if item.startswith('AP_') else float(item)   number
                for item, number in zip(row, sums)]

# Append averages to the end of the file
with open('data.csv', 'a') as file:
    file.seek(0, 2)  # Go to the end of the file
    file.write('naverage:n')
    file.write(','.join(item if type(item) == str else f'({item / num})'
                        for item in sums))
 

Я предполагаю, что файл с данными имеет имя data.csv . Я попытался объяснить, что происходит в комментариях.