Python:基于另一个列名获取一个列的值

2024-06-06 00:38:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,尝试读取csv文件并生成销售报告。例如,我有一个如下所示的数据集

Category  | State     | Sales| Profits|
Clothes   | California| 2389 | 608
Stationery| Georgia   | 687  | 54
Gadgets   | Washington| 324  | 90

在不使用熊猫的情况下,如何获得基于状态和类别的利润总和?这意味着当类别为“衣服”时,我需要将“销售额”和“利润”的值相加

我目前正在使用下面的代码,这需要大量的手动工作

with open(path,"r") as store_file:
    reader = csv.DictReader(superstore_file)
    
    total_sales_clothes = 0
    total_sales_stationery = 0
    total_sales_gadgets = 0
    
    for row in reader:
        category = row.get("Category")
        if category=="Clothes":
            sales_clothes = float(row.get("Sales"))
            total_sales_clothes += sales_clothes
        elif category=="Stationery":
            sales_stationery = float(row.get("Sales"))
            total_sales_stationery += sales_stationery
        elif category=="Gadgets":
            sales_office_gadgets = float(row.get("Sales"))
            total_sales_gadgets += sales_gadgets 
    print("Total Sales for Clothes is: {0}".format(total_sales_clothes))
    print("Total Sales for Stationery is {0}".format(total_sales_stationery))
    print("Total Sales for Gadgets is {0}".format(total_sales_gadgets))

Tags: forgetfloatgadgetsrowtotalprintsales
1条回答
网友
1楼 · 发布于 2024-06-06 00:38:59

您可以使用python dict。这样,您就不必硬编码类别 python字典是一种非常有用的键值数据结构。 在您的情况下,关键是类别,价值是总销售额。 例如

{ "Clothes" : 2389, "Stationery" : 0, "Gadgets" : 0, }

编辑:请注意,您应该检查类别是否存在。如果是,只需添加销售值,否则只需分配值

with open(path,"r") as store_file:

reader = csv.DictReader(superstore_file)

total_sales = {}

for row in reader:
    category = row.get("Category")
    if category in total_sales:
        total_sales[category] += float(row.get(category))
    else:
        total_sales[category] = float(row.get(category))

print("Total Sales for Clothes is: {0}".format(total_sales['Clothes']))

如果您想遍历所有类别的dict和print sales,请使用

for key in total_sales:
    print("Total Sales for " + key + " is : " + total_sales[key])

而且,尽管您提到您不想使用Pandas,但如果您打算长期使用这些类型的CSV数据集,我建议您检查它的使用情况。一旦你开始,你会发现它让你的工作变得多么容易。你将节省比你花在学习熊猫上更多的时间

相关问题 更多 >