我只是在学习Python,并且在使用该语言的列表功能方面遇到了一些麻烦。我有一个名为purchases.csv
的.csv文件,我需要用它做四件事:
输出需要看起来像:
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)
要查找购买总数,但我已经打了墙,似乎无法弄明白其余的!我喜欢这方面的任何帮助和指导......我只是想不出来!
答案 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()
从上面的其他部分来看,这应该是不言自明的。