在python中查找列表中唯一数据的平均值

在python中查找列表中唯一数据的平均值,python,filter,average,Python,Filter,Average,数据列如下:城市、名字、姓氏、性别、年龄、体重。客户可以多次输入,并以不同的权重记录 我通过以下操作唯一地识别了客户和性别: 现在,我想找到独特客户的平均年龄。不知道怎么做? 另外,我想报告有多少客户被多次称重。客户将被列为记录体重的次数。这是我的班级 class clients: def __init__(self, city, name, gender, age, weight): self.City = city self.Name = name

数据列如下:城市、名字、姓氏、性别、年龄、体重。客户可以多次输入,并以不同的权重记录

我通过以下操作唯一地识别了客户和性别:

现在,我想找到独特客户的平均年龄。不知道怎么做? 另外,我想报告有多少客户被多次称重。客户将被列为记录体重的次数。这是我的班级

class clients:
    def __init__(self, city, name, gender, age, weight):
        self.City = city
        self.Name = name
        self.Gender = gender
        self.Age = age
        self.Weight = weight

对该主题的部分回答:

  • 对类声明进行了一些更正,因此它可以解释唯一性
  • 类客户端:
    定义初始(自我、城市、名、姓、性别、年龄、体重、uuid):
    self.City=城市
    self.FirstName=名字
    self.LastName=姓氏
    self.Gender=性别
    自我。年龄=年龄
    自重=重量
    self.UUID=UUID
    定义(自身、其他):
    如果self.City==其他.City和\
    self.FirstName==其他.FirstName和\
    self.LastName==其他.LastName和\
    self.Gender==其他.Gender和\
    self.Age==其他.Age和\
    自身重量==其他重量和\
    self.UUID==其他.UUID:
    返回真值
    返回错误
    定义散列(自我):
    返回散列((self.City、self.FirstName、self.LastName、self.Gender、self.Age、self.Weight、self.UUID))
    
  • 假设您有一个不同条目的简单列表,如:
  • 导入uuid
    测量值列表=[]
    添加(客户端(“Spamburg”、“Foo”、“Bar”、“Apache”、31、80、uuid.uuid4()))
    测量值列表。附加(客户端(“Spamburg”、“Foo”、“Bar”、“Apache”、31、82,测量值列表[0].UUID))\35;新的重量测量值
    测量值列表。追加(客户端(“Spamburg”、“Foo”、“Bar”、“Apache”、32、83、测量值列表[0].UUID))#新的体重测量值,年龄更改
    测量值列表。追加(客户端(“Spamville”、“Foo”、“Bar”、“Apache”、33、83,测量值列表[0].UUID))\35;新的重量测量值,客户端已移动
    测量值列表.append(客户端(“Spamville”、“Foo”、“Bar”、“Apache”、33、83、测量值列表[0].UUID))#重复测量值
    测量值列表。追加(客户(“Spamville”、“Foo”、“Bar”、“Hind”、33、83、测量值列表[0].UUID”)#客户发生性别变化
    测量值列表。追加(客户(“Spamville”、“Foo”、“桑给巴尔”、“Hind”、33、83,测量值列表[0].UUID))#客户结婚并更改了姓氏
    列出所有度量值。追加(客户端(“Spamville”、“Foo-Too”、“Bar-None”、“Hind”、23、63、uuid.uuid4()))#第二个唯一客户端
    列出度量值。追加(客户端(“Spamville”、“Foo Three”、“Bar Some”、“Apache”、18、60、uuid.uuid4())#第三个唯一客户端
    
    请注意,除了UUID之外,每个客户的所有内容实际上都可能发生变化

  • 查找唯一客户的数量-可通过使用以下集合获得:
  • set_of_clients=set([c.UUID for c in list_of_measurements])将只包含唯一的UUID
    
  • 报告有多个体重测量的客户-可以使用dict和sum:
  • measurements\u dict={uid:sum(如果c.UUID==uid,则表示度量值列表中的c为1),表示客户端集合中的uid}
    列出超过一个度量值的客户列表=[uid表示uid,m表示度量值中的项目(如果m>1)]
    打印(列出多个测量值的客户列表)
    
  • 删除可能重复的度量值-可以通过强制转换为list和set来完成,这需要类的先前定义的eqhash属性
  • list_of_deduplicated_measurements=list(set(list_of_measurements))
    
  • 平均年龄,假定您只希望对客户最后记录的年龄进行平均
  • 从统计导入平均值
    ages_dict={uid:max(如果c.UUID==uid,则c.Age表示_度量值列表中的c)表示_客户端集合中的uid}
    平均年龄=平均值(年龄数值()
    
    1。您是否可以指定用于决定客户机“唯一性”的属性集,因为您写道同一客户机可能会被多次列出?2.同一客户是否可能有历史数据(不同年龄)?3.客户机数据是如何存储的?它是一个列表,还是…客户端名称是唯一的?你们班的名字不好;这是体重记录,不是“客户”