【问题标题】:Python: Average Prie per YearPython:每年的平均价格
【发布时间】:2017-11-01 03:20:33
【问题描述】:

有人能帮我解决以下问题吗?我正在尝试创建一个可以打开“notepad.txt”文件并计算 10 月份平均价格的程序。

notepad.txt
10-15-2012:3.886
10-22-2012:3.756
10-29-2012:3.638


infile = open('notepad.txt', 'r')

def clean_data():

    line1 = infile.readline()
    split1 = line1.rstrip('\n')
    items = split1[0].split('-')
    del items[0]
    del items[0]
    master = []
    master = master + split1 + items
    master = list(map(float, master))
    print(master)
    print(total)
    line1 = infile.readline()
clean_data()

【问题讨论】:

    标签: python list file average


    【解决方案1】:

    这会打印并返回平均值

    def clean_data(infile):
        lines = infile.readlines()
        total = 0.0
        num = 0
        for line in lines:
            spl = line.strip().split(":")
            total += float(spl[len(spl)-1])
            num += 1
        average = total/num
        print(average)
        return average
    

    【讨论】:

      【解决方案2】:
      def sum_data():
          n,c = 0,0
          with  open('notepad.txt', 'r') as infile:
              x = infile.readline()
              # for october 10
              if x[:3]=='10-' and x[6:10]=='2010';
                  n += float(x[12:])
                  c += 1
          print(n/c)
      

      【讨论】:

        【解决方案3】:

        如果你想使用 Pandas:

        from io import StringIO
        import pandas as pd
        
        notepadtxt = StringIO("""10-15-2012:3.886
        10-22-2012:3.756
        10-29-2012:3.638""")
        
        df = pd.read_csv(notepadtxt, sep='\:',header=None, engine='python')
        
        df[0] = pd.to_datetime(df[0])
        
        df=df.set_index(0)
        
        df.resample('M').mean().values[0][0]
        

        输出:

        3.7600000000000002
        

        【讨论】:

          【解决方案4】:

          下面的普通 Python 代码就足够了:

          infile = open('notepad.txt', 'r')
          
          def clean_data():
              data = []
              for line in infile:
                      data.append(line.strip().split(':'))
              values = []
              for value in data:
                  values.append(float(value[1]))
              avg_price = sum(values)/len(values)
              print(avg_price)
          
          clean_data()
          infile.close()
          

          【讨论】:

            猜你喜欢
            • 2021-05-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-10
            • 2018-09-05
            相关资源
            最近更新 更多