簡體   English   中英

使用 Python 從 CSV 文件中查找每一列的平均值?

[英]Finding average of every column from CSV file using Python?

我有一個 CSV 文件,它有幾列和幾行。 請看上圖。 圖片中只顯示了前兩個籃子,但在原始 CSV 文件中,我有數百個。 [1]: https://i.stack.imgur.com/R2ZTo.png

我想使用 Python 計算每個籃子中每個水果的平均值。 這是我的代碼,但它似乎無法正常工作。 更好的想法? 我也嘗試過導入和使用 numpy 來解決這個問題,但我沒有成功。

我將不勝感激任何幫助或建議。 我對此完全陌生。

import csv
from operator import itemgetter


fileLineList = []
averageFruitsDict = {} # Creating an empty dictionary here.

with open('Fruits.csv', newline='') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        fileLineList.append(row)

for column in fileLineList:
    highest = 0
    lowest = 0
    total = 0
    average = 0
    for column in row:
        if column.isdigit():
            column = int(column)
            if column > highest:
                highest = column
            if column < lowest or lowest == 0:
                lowest = column
            total += column    
    average = total / 3
  
    averageFruitsDict[row[0]] = [highest, lowest, round(average)]

averageFruitsList = []


for key, value in averageFruitsDict.items():
    averageFruitsList.append([key, value[2]])


print('\nFruits in Baskets\n')
print(averageFruitsList)

---所以我知道嘗試使用此代碼:

import pandas as pd

fruits = pd.read_csv('fruits.csv', sep=';')
print(list(fruits.columns))
fruits['Unnamed: 0'].fillna(method='ffill', inplace = True)
fruits.groupby('Unnamed: 0').mean()
fruits.groupby('Bananas').mean()
fruits.groupby('Apples').mean()
fruits.groupby('Oranges').mean()
fruits.to_csv('results.csv', index=False)

它為我創建了一個新的 CSV 文件,它看起來正確,我沒有收到任何錯誤,但我無法讓它計算每個籃子的每個水果的平均值。 感謝所有幫助!

因此,使用您發布的圖像並復制/創建一個名為fruit的相同測試csv - 我能夠使用pandas創建這個快速解決方案。

import pandas as pd
fruit = pd.read_csv('fruit.csv')

在此處輸入圖像描述

未命名的列包含籃子編號,中間有 NaN - 我們用前面的值填充。 通過這樣做,我們就可以按籃子編號進行分組(通過使用“未命名:0”列並將平均值應用於所有其他列)

fruit['Unnamed: 0'].fillna(method='ffill', inplace = True)

fruit.groupby('Unnamed: 0').mean()

這將為您提供您想要的 output 每個籃子的水果平均值(請注意我為籃子 3 編造了值)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM