Python 计算CSV中的条目?
我只是在学习Python,在使用该语言的列表功能时遇到了一些问题。我有一个名为Python 计算CSV中的条目?,python,list,csv,counting,Python,List,Csv,Counting,我只是在学习Python,在使用该语言的列表功能时遇到了一些问题。我有一个名为purchases.csv的.csv文件,我需要用它做四件事: 输出“采购订单”的总数,即计算csv中条目的总数 输出购买的平均金额,显示三位小数 输出超过1800次的采购总数 输出超过1800的平均购买量,显示三位小数 输出需要如下所示: 采购总数:xxxx 平均购买金额:xxxx 超过1800美元的采购订单数量:xxxx 平均购买金额超过1800美元:xxxx 到目前为止我已经写过了 import csv wi
purchases.csv的.csv文件,我需要用它做四件事:
输出“采购订单”的总数,即计算csv中条目的总数
输出购买的平均金额,显示三位小数
输出超过1800次的采购总数
输出超过1800的平均购买量,显示三位小数
输出需要如下所示:
采购总数:xxxx
平均购买金额:xxxx
超过1800美元的采购订单数量:xxxx
平均购买金额超过1800美元: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 ));
你的问题有点含糊不清,但还是来了
除非你受到要求的限制,因为这似乎是家庭作业/作业,否则你应该试一试。这是一个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]返回行数
输出购买的平均金额,显示三位小数
使用括号访问“采购金额”列
输出超过1800次的采购总数
这里有点扭曲,只知道这是在熊猫身上设置条件的一种方法
输出超过1800的平均购买量
显示三个小数
从上面的其余部分可以看出,这是不言自明的。sum
是Python中的内置函数。不要重新定义它。什么是主运行
?它来自哪里?你能显示你的输入文件吗?
mean = df['purchase_amount'].mean()
num_over_1800 = df[df['purchase_amount'] > 1800].shape[0]
mean_over_1800 = df[df['purchase_amount'] > 1800].mean()