计算CSV中的条目?

时间:2018-05-28 22:50:18

标签: python list csv counting

我只是在学习Python,并且在使用该语言的列表功能方面遇到了一些麻烦。我有一个名为purchases.csv的.csv文件,我需要用它做四件事:

  1. 输出“采购订单”的总数,也就是计算csv
  2. 中的条目总数
  3. 输出平均购买金额,显示三位小数。
  4. 输出超过1,800的购买总数
  5. 输出超过1,800的平均购买量,显示三位小数。
  6. 输出需要看起来像:

    Total Number of Purchases: xxxx
    Amount of Average Purchase: xxxx
    Number of Purchase Orders over $1,800: xxxx
    Amount of Average Purchases over $1,800: xxxx
    

    到目前为止我已经写过了

    import csv
    
    with open('purchases.csv') as csvfile:
        readCSV = csv.reader(csvfile,delimiter=',')
        total_purchases=[]
        for row in readCSV:
            total=row[0]
            total_purchases.append(total)
    
    print(total_purchases)
    
    my_sum=0
    for x in home_runs:
        my_sum=my_sum+int(x)
    print("The total number of purchases was: ", my_sum)
    

    要查找购买总数,但我已经打了,似乎无法弄明白其余的!我喜欢这方面的任何帮助和指导......我只是想不出来!

2 个答案:

答案 0 :(得分:1)

你需要一系列独立的类似for循环,但if语句只能有条件地计算总和。

假设row [0]是您的价格列:

var sumAbove1800 = 0;
var countAbove1800 = 0;
var totalSum = 0;
var totalPurchases = 0;
for row in readCSV:
        var price = float(row[0])
        totalPurchases = totalPurchases + 1;
        totalSum = totalSum + price;
        if(price > 1800):
            sumAbove1800 = sumAbove1800 + price;
            countAbove1800 = countAbove1800 + 1;

现在用3位小数打印出来:

print("Total Average Price: {:.3f}".format(totalSum / totalPurchases));
print("Total Transactions: {:.3f}".format(totalPurchases));
print("Total Average Price above 1800: {:.3f}".format(sumAbove1800 / countAbove1800 ));
print("Total Transactions above 1800: {:.3f}".format(countAbove1800 ));

答案 1 :(得分:1)

你的问题有点过于模糊,但无论如何都要进行。

除非您受到要求的限制,因为这似乎是家庭作业/作业,您应该尝试Pandas。它是一个Python库,可以极大地帮助进行数据争用和数据分析。

  

输出“采购订单”的总数,也就是计算csv中的条目总数

对于熊猫来说这很容易:

import pandas as pd
df = pd.read_csv('purchases.csv')
num = df.shape[0]

前两行不言自明。使用read_csv()构建Pandas.DataFrame对象的实例并将其存储在df中。对于最后一行,只知道Pandas.DataFrame有一个名为shape的成员,其格式为(行数,列数),因此shape [0]返回行数。

  

输出平均购买金额,显示三位小数。

mean = df['purchase_amount'].mean()

使用括号访问列'purchase_amount'。

  

输出超过1,800的购买总数

num_over_1800 = df[df['purchase_amount'] > 1800].shape[0]

这里稍微扭曲,只知道这是在熊猫中设置条件的一种方法。

  

输出超过1,800的平均购买量   显示三位小数。

mean_over_1800 = df[df['purchase_amount'] > 1800].mean()

从上面的其他部分来看,这应该是不言自明的。