Как вычислить медиану списка чисел из файла CSV?

#python #csv #median

Вопрос:

Я работал над выполнением короткой функции по поиску медианы из списка.
Вот часть файла csv:

 Index,Height(Inches),Weight(Pounds)
1,65.78331,112.9925
2,71.51521,136.4873
3,69.39874,153.0269
4,68.2166,142.3354
5,67.78781,144.2971
6,68.69784,123.3024
7,69.80204,141.4947
8,70.01472,136.4623
9,67.90265,112.3723
10,66.78236,120.6672
11,66.48769,127.4516
12,67.62333,114.143
13,68.30248,125.6107
14,67.11656,122.4618
15,68.27967,116.0866
16,71.0916,139.9975
17,66.461,129.5023
18,68.64927,142.9733
19,71.23033,137.9025
20,67.13118,124.0449
21,67.83379,141.2807
22,68.87881,143.5392
23,63.48115,97.90191
24,68.42187,129.5027
25,67.62804,141.8501
26,67.20864,129.7244
27,70.84235,142.4235
 

Может ли кто-нибудь помочь мне в этом?
Я пытался использовать Counter также для подсчета количества элементов.
Я хочу найти медиану третьего столбца.
Моя ранее существовавшая функция:

 def median():
   n = (len(file_data))
   file_data.sort()
   if n%2==0:
    median1 = file_data[n//2]
    median2 = file_data[n//2-1]
    median = (median1 median2)/2
    mediankg1 = median/2.2046
   else:
      median = file_data[n//2]
      mediankg = median/2.2046
   print("MEDIAN")
   print("Median is "   str(median) " pounds")
   print("OR")
   print("Median is "   str(mediankg1) " kilograms")


median()
 

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

1. Как насчет использования pandas?

Ответ №1:

Используйте pandas для чтения вашего файла CSV, а затем вызовите median

Ответ №2:

Вы должны использовать pandas для этого, так как он имеет встроенные функции для этих задач. Документация по установке находится здесь: https://pandas.pydata.org/docs/getting_started/install.html

Следующего кода должно быть достаточно, чтобы вы начали:

 import pandas as pd

df = pd.read_csv('/path/to/file.csv', header=None)

median_col = df.median(axis=0) # Median of each column
median_row = df.median(axis=1) # Median of each row

median_row_3 = median_row[2] # Median of 3rd column
 

Ответ №3:

Это должно сработать, если вы не хотите использовать pandas:

 import csv
file_data = [float(row[2]) for row in csv.reader(open(csvfile), delimiter=',')]

n = len(file_data)
file_data.sort()
median = file_data[n//2]
if n%2==0:
    median = (median file_data[n//2-1])/2
mediankg1 = median/2.2046
print("MEDIAN")
print("Median is "   str(median) " pounds")
print("OR")
print("Median is "   str(mediankg1) " kilograms")
 

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

1. Хотя этот код может ответить на вопрос, было бы лучше включить некоторый контекст, объясняющий, как это работает и когда его использовать. Ответы только для кода бесполезны в долгосрочной перспективе.