#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
. Я попытался объяснить, что происходит в комментариях.