Python—在并行字典中查找值的平均值
所以我有一些.csv数据文件需要清理。其中一行数据的示例如下: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
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
),其余是列表理解(查找它,这对于缩短代码非常有用)