计算 CSV 中的条目?
Counting entries in a CSV?
我刚刚开始学习 Python,并且在使用该语言的列表功能时遇到了一些麻烦。我有一个名为 purchases.csv
的 .csv 文件,我需要用它做四件事:
- 输出 "purchase orders" 的总数,也就是计算 csv 中的条目总数
- 输出平均购买金额,显示三位小数。
- 输出超过 1,800 的购买总数
- 输出超过 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()
从上面的其余部分来看,这应该是不言自明的。
我刚刚开始学习 Python,并且在使用该语言的列表功能时遇到了一些麻烦。我有一个名为 purchases.csv
的 .csv 文件,我需要用它做四件事:
- 输出 "purchase orders" 的总数,也就是计算 csv 中的条目总数
- 输出平均购买金额,显示三位小数。
- 输出超过 1,800 的购买总数
- 输出超过 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()
从上面的其余部分来看,这应该是不言自明的。