计算 CSV 中的条目?

Counting entries in a CSV?

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

  1. 输出 "purchase orders" 的总数,也就是计算 csv 中的条目总数
  2. 输出平均购买金额,显示三位小数。
  3. 输出超过 1,800 的购买总数
  4. 输出超过 1,800 的平均购买金额,显示三位小数。

输出需要类似于:

Total Number of Purchases: xxxx
Amount of Average Purchase: xxxx
Number of Purchase Orders over ,800: xxxx
Amount of Average Purchases over ,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)

求总购买次数,但是碰壁,剩下的好像想不出来了!我希望得到任何帮助和指导...我就是想不通!

您需要一系列独立的类似 for 循环,但使用 if 语句仅有条件地计算总和。

假设第 [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 ));

你的问题有点太含糊了,不过还是来吧。

除非您受到要求的限制,因为这似乎是家庭作业/作业,否则您应该 Pandas 尝试一下。这是一个 Python 库,对数据整理和数据分析有很大帮助。

output the total number of "purchase orders" aka count the total number of entries in the csv

Pandas这很容易:

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

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

output the average amount of the purchases, showing three decimals.

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

使用方括号访问列 'purchase_amount'。

output the total number of purchases made over 1,800

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

这里稍作改动,只知道这是在 Pandas 中设置条件的一种方法。

output the average amount of purchases made that are over 1,800 showing three decimals.

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

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