【问题标题】:How to calculate the median of a list of numbers from a CSV file?如何计算 CSV 文件中数字列表的中位数?
【发布时间】:2021-12-07 23:23:58
【问题描述】:

我正在做一个从列表中查找中位数的简短函数。
这是 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()

【问题讨论】:

标签: python csv median


【解决方案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")
      

      【讨论】:

      • 虽然这段代码可以回答这个问题,但最好包含一些上下文,解释它的如何工作以及何时使用它。从长远来看,纯代码的答案没有用处。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 2020-07-19
      • 2022-11-17
      相关资源
      最近更新 更多