Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—在并行字典中查找值的平均值_Python_List_Loops_Dictionary_Counter - Fatal编程技术网

Python—在并行字典中查找值的平均值

Python—在并行字典中查找值的平均值,python,list,loops,dictionary,counter,Python,List,Loops,Dictionary,Counter,所以我有一些.csv数据文件需要清理。其中一行数据的示例如下: u[i] = {'age': '44', 'salary': '117681.0', 'suburb': None, 'language': 'English'} 我已经过滤掉了我不想要的数据,并返回了多行相关词典。例如: {'age': '44', 'salary': '117681.0', 'suburb': None} {'age': '34', 'salary': '56456.0', 'suburb': 'Frankst

所以我有一些.csv数据文件需要清理。其中一行数据的示例如下:

u[i] = {'age': '44', 'salary': '117681.0', 'suburb': None, 'language': 'English'}
我已经过滤掉了我不想要的数据,并返回了多行相关词典。例如:

{'age': '44', 'salary': '117681.0', 'suburb': None}
{'age': '34', 'salary': '56456.0', 'suburb': 'Frankston'}
{'age': '37', 'salary': '59370.0', 'suburb': 'Richmond'}
{'age': '44', 'salary': '91399.0', 'suburb': 'Collingwood'}
{'age': '36', 'salary': '74437.0', 'suburb': 'Toorak'}
{'age': '41', 'salary': '89121.0', 'suburb': 'Frankston'}
我现在想把这些字典里的工资加起来,算出平均工资,但我一辈子都想不出来

我尝试过只隔离工资值和使用计数器,但我似乎无法使其发挥作用。我也尝试过制作可以循环使用的列表,但似乎无法在一个列表中获得所有值。我的问题是,当我隔离这些值时,它们是平行的值/列表,我不知道如何使用它们

我真的很感激任何帮助,这让我发疯了!谢谢

以下是我到目前为止的代码,但在现阶段我没有任何值得一看的内容:

def average_salary(data, lower_age, upper_age): 
    u = dict(sorted(data_cleaned.items()))
    count = 0  

    for i in u:
        age = u[i]['age']
        sal = u[i]['salary']
        tally = 0

        if age is not None and sal is not None and lower_age < float(age) < upper_age:
            tally += float(u[i]['salary'])
            print(u[i]['salary'])
def平均工资(数据、较低年龄、较高年龄):
u=dict(已排序(数据\u.items())
计数=0
对于我在u:
年龄=u[i]['age']
sal=u[i][“工资”]
计数=0
如果年龄不是无且sal不是无且较低年龄<浮动(年龄)<较高年龄:
理货+=浮动(u[i][“工资])
打印(u[i][“工资])

在列表中收集工资

salaries = [float(my_dict['salary']) for my_dict in my_dicts]
average = sum(salaries) / len(salaries)

把薪水列在一张单子上

salaries = [float(my_dict['salary']) for my_dict in my_dicts]
average = sum(salaries) / len(salaries)

假设您已将其列为一个列表:

i = [{'age': '44', 'salary': '117681.0', 'suburb': None},
{'age': '34', 'salary': '56456.0', 'suburb': 'Frankston'},
{'age': '37', 'salary': '59370.0', 'suburb': 'Richmond'},
{'age': '44', 'salary': '91399.0', 'suburb': 'Collingwood'},
{'age': '36', 'salary': '74437.0', 'suburb': 'Toorak'},
{'age': '41', 'salary': '89121.0', 'suburb': 'Frankston'}]

age_avg = sum(int(item["age"]) for item in i) / len(i)
salary_avg = sum(float(item["salary"]) for item in i) / len(i)

print (age_avg, salary_avg)
结果:

39.333333333333336 81410.66666666667

假设您已将其列为一个列表:

i = [{'age': '44', 'salary': '117681.0', 'suburb': None},
{'age': '34', 'salary': '56456.0', 'suburb': 'Frankston'},
{'age': '37', 'salary': '59370.0', 'suburb': 'Richmond'},
{'age': '44', 'salary': '91399.0', 'suburb': 'Collingwood'},
{'age': '36', 'salary': '74437.0', 'suburb': 'Toorak'},
{'age': '41', 'salary': '89121.0', 'suburb': 'Frankston'}]

age_avg = sum(int(item["age"]) for item in i) / len(i)
salary_avg = sum(float(item["salary"]) for item in i) / len(i)

print (age_avg, salary_avg)
结果:

39.333333333333336 81410.66666666667

我还提出了如下解决方案:

#!/usr/bin/env ipython
import numpy as np

u=[];
u.append({'age': '44', 'salary': '117681.0', 'suburb': None})
u.append({'age': '34', 'salary': '56456.0', 'suburb': 'Frankston'})
u.append({'age': '37', 'salary': '59370.0', 'suburb': 'Richmond'})
u.append({'age': '44', 'salary': '91399.0', 'suburb': 'Collingwood'})
u.append({'age': '36', 'salary': '74437.0', 'suburb': 'Toorak'})
u.append({'age': '41', 'salary': '89121.0', 'suburb': 'Frankston'})
# ------------------------------------------------------------------
def avg_salary(data,lower_age,upper_age):
    salaries = [float(val['salary']) for val in u if float(val['age'])>lower_age and float(val['age'])<upper_age];
    return sum(salaries)/len(salaries)
# -------------------------------------------------------------------
print avg_salary(u,5,65)
#/usr/bin/env ipython
将numpy作为np导入
u=[];
u、 追加({'age':'44','salary':'117681.0','Suburban':None})
u、 追加({'age':'34','salary':'56456.0','Suburban':'Frankston'})
u、 追加({'age':'37','salary':'59370.0','suburban':'Richmond'})
u、 追加({'age':'44','salary':'91399.0','Suburban':'Collingwood'})
u、 追加({'age':'36','salary':'74437.0','Suburban':'Toorak'})
u、 追加({'age':'41','salary':'89121.0','Suburban':'Frankston'})
# ------------------------------------------------------------------
def平均工资(数据、较低年龄、较高年龄):

工资=[float(val['salary'])如果浮动(val['age'])>较低的年龄和浮动(val['age']),我还建议这样一个解决方案:

#!/usr/bin/env ipython
import numpy as np

u=[];
u.append({'age': '44', 'salary': '117681.0', 'suburb': None})
u.append({'age': '34', 'salary': '56456.0', 'suburb': 'Frankston'})
u.append({'age': '37', 'salary': '59370.0', 'suburb': 'Richmond'})
u.append({'age': '44', 'salary': '91399.0', 'suburb': 'Collingwood'})
u.append({'age': '36', 'salary': '74437.0', 'suburb': 'Toorak'})
u.append({'age': '41', 'salary': '89121.0', 'suburb': 'Frankston'})
# ------------------------------------------------------------------
def avg_salary(data,lower_age,upper_age):
    salaries = [float(val['salary']) for val in u if float(val['age'])>lower_age and float(val['age'])<upper_age];
    return sum(salaries)/len(salaries)
# -------------------------------------------------------------------
print avg_salary(u,5,65)
!/usr/bin/env ipython
将numpy作为np导入
u=[];
u、 追加({'age':'44','salary':'117681.0','Suburban':None})
u、 追加({'age':'34','salary':'56456.0','Suburban':'Frankston'})
u、 追加({'age':'37','salary':'59370.0','suburban':'Richmond'})
u、 追加({'age':'44','salary':'91399.0','Suburban':'Collingwood'})
u、 追加({'age':'36','salary':'74437.0','Suburban':'Toorak'})
u、 追加({'age':'41','salary':'89121.0','Suburban':'Frankston'})
# ------------------------------------------------------------------
def平均工资(数据、较低年龄、较高年龄):

palaries=[float(val['salary'])如果float(val['age'])大于lower_age和float(val['age'])假设您安装了pandas,则可以执行此操作或使用
pip安装pandas
进行安装,或使用anaconda进行安装

import pandas as pd
a=[{'age': '44', 'salary': '117681.0', 'suburb': None},
{'age': '34', 'salary': '56456.0', 'suburb': 'Frankston'},
{'age': '37', 'salary': '59370.0', 'suburb': 'Richmond'},
{'age': '44', 'salary': '91399.0', 'suburb': 'Collingwood'},
{'age': '36', 'salary': '74437.0', 'suburb': 'Toorak'},
{'age': '41', 'salary': '89121.0', 'suburb': 'Frankston'}]
df=pd.DataFrame(a)
df['salary']=pd.to_numeric(df['salary'],errors='coerce')
df['age']=pd.to_numeric(df['age'],errors='coerce')
print(df['salary'].mean())
print(df['age'].mean())
输出

81410.66666666667
39.333333333333336

假设已安装pandas,则可以执行此操作或使用
pip install pandas
安装或使用anaconda安装

import pandas as pd
a=[{'age': '44', 'salary': '117681.0', 'suburb': None},
{'age': '34', 'salary': '56456.0', 'suburb': 'Frankston'},
{'age': '37', 'salary': '59370.0', 'suburb': 'Richmond'},
{'age': '44', 'salary': '91399.0', 'suburb': 'Collingwood'},
{'age': '36', 'salary': '74437.0', 'suburb': 'Toorak'},
{'age': '41', 'salary': '89121.0', 'suburb': 'Frankston'}]
df=pd.DataFrame(a)
df['salary']=pd.to_numeric(df['salary'],errors='coerce')
df['age']=pd.to_numeric(df['age'],errors='coerce')
print(df['salary'].mean())
print(df['age'].mean())
输出

81410.66666666667
39.333333333333336

虽然@blue\u note solution可以很好地解决您的特定问题,但看起来您希望对来自
csv
的表格数据执行操作。因此,您可能需要寻找一个更专业的库来完成这些工作,如
pandas
numpy
。而@blue\u note solution可以很好地解决您的特定问题在上,您似乎希望对来自
csv
的表格数据执行操作。因此,您可能希望寻找一个更专业的库来执行此类操作,如
pandas
numpy
。抱歉,我有点困惑(对编码一无所知),我的代码的my_dict['salary']是否等同于u[I]['salary']?my_dicts到底代表什么?@user10276362:
my_dicts
是包含所有词典的列表的名称(如果我理解正确,可能是变量
u
),其余是列表理解(查找它,它对缩短代码非常有用)对不起,我有点困惑(不熟悉编码),我的代码的my_dict['salary']是否等同于u[i]['salary']?我的dict到底代表什么?@user10276362:
my_dicts
是包含所有词典的列表的名称(如果我理解正确,可能是变量
u
),其余是列表理解(查找它,这对于缩短代码非常有用)