Использование цикла for для вычисления среднего значения списка кортежей в Python

#python #list #tuples #mean

Вопрос:

Мое задание состоит в том, чтобы использовать цикл for для получения средних целых чисел, которые представляют собой показатели вакцинации в каждом округе, присвоенные второму индексу кортежей в списке ниже. Я просмотрел аналогичные вопросы/ответы и попытался адаптировать предлагаемые решения, но, похоже, я не могу связать их с моим списком кортежей таким образом, чтобы это работало.

 vacc_counties = [
    ("Pulaski", 42.7),
    ("Benton", 41.4),
    ("Fulton", 22.1),
    ("Miller", 9.6),
    ("Mississippi", 29.4),
    ("Scott County", 28.1),
]
 

Я получаю среднее значение-это сумма второго индекса, деленная на длину, sum()/len (), но я не могу понять, как ссылаться на этот второй индекс или как связать переменную с экземплярами чисел во втором индексе по всему списку. Я теряюсь в поиске правильного синтаксиса здесь, чтобы получить сумму и длину и разделить их таким образом, чтобы вывести среднее значение.

Некоторые вопросы и ответы упоминают импорт панд или numpy.mean, но я застрял, выясняя, как применить их к моему собственному коду.

Мы будем очень признательны за любую помощь.

Ответ №1:

 vacc_counties = [
    ("Pulaski", 42.7),
    ("Benton", 41.4),
    ("Fulton", 22.1),
    ("Miller", 9.6),
    ("Mississippi", 29.4),
    ("Scott County", 28.1),
]


#To get a tuple in the list, in this case the first tuple:
print(vacc_counties[0])

#To get a value in the tuple, in this case the second value in the second tuple:
print(vacc_counties[1][1])



#Apply this to a loop:
for tup in vacc_counties:

    #For every tuple in the list it prints the second value of the tuple
    print(tup[1])


#To get the means:
#Get all percents into list
percents = []
for tup in vacc_counties:
    percents.append(tup[1])

#Now add up all the percents to get a total
total = 0
for percent in percents:
    total  = percent
#Finally divide the added percents by the length of percents
print(total/len(percents))
 

Если у вас есть еще вопросы, оставляйте их здесь!

Комментарии:

1. Спасибо, что прогулялся и сломался, это было именно то, что мне было нужно. Ваш ответ решил проблемы и помог мне справиться с тем, что доставляло мне проблемы. Еще раз спасибо!

Ответ №2:

Вот 2 возможных решения:

Используя sum() len()

 vacc_counties = [
    ("Pulaski", 42.7),
    ("Benton", 41.4),
    ("Fulton", 22.1),
    ("Miller", 9.6),
    ("Mississippi", 29.4),
    ("Scott County", 28.1),
]
avg=round(sum(x[1] for x in vacc_counties)/len(vacc_counties),2)
print(avg)
 

С помощью numpy

 import numpy as np

array = np.array(vacc_counties)
print(array[:,1].astype(float).mean())
 

Комментарии:

1. Спасибо! Эти решения работают. Я ценю, что вы ими делитесь. Я узнал много нового. Еще раз спасибо.

2. Приветствую @Psiberian_Mushky Подумайте о том, чтобы принять и проголосовать за ответ, если он решит вопрос

Ответ №3:

Не беспокойтесь об использовании панд или numpy, пока вы не освоите основы Python. Это библиотеки, которые предлагают более компактный и быстрый способ для исследователей данных манипулировать данными.

Пока вы просматриваете данные

 for county_data in vacc_counties:
 

Вы можете получить первый элемент в кортеже с city = county_data[0] помощью , а второй элемент с помощью vaccination_rate = county_data[1]

Так что вместе это

 for county_data in vacc_counties:
    vaccination_rate = county_data[1]
 

Я оставлю это на ваше усмотрение, чтобы затем выяснить точный код для получения среднего значения, но в основном вы захотите выполнить следующие три шага:

  1. Прежде чем вы начнете цикл, вам нужно будет создать переменную для отслеживания текущего итога
  2. Затем внутри цикла вы захотите добавить каждый показатель вакцинации к этому текущему итогу.
  3. После цикла, когда придет время разделить текущий итог на общее количество элементов, используйте функцию len, чтобы получить общее количество элементов в вашем vacc_counties списке. (Общее количество кортежей будет таким же, как и общее количество вакцинаций).

В качестве альтернативы, вы упомянули функцию sum в своем вопросе. Вы могли бы подумать, что нахождение среднего значения было бы единственным местом, где функция суммы могла бы пригодиться, и это возможно. Если бы вы хотели использовать функцию sum, вам понадобился бы отдельный список, в котором есть только числа. Что сделал Тамалджейк при создании своего percents списка. Как только вы создадите этот список, вы сможете легко вызвать sum функцию в своем списке, чтобы получить общее количество. например total = sum(list_of_numbers) .

Комментарии:

1. Это более чем здорово! Огромное спасибо за разбивку и концептуальный обзор. Я собираюсь поработать с этим, чтобы разобраться в этом. Это отвечает на проблемы, которые больше всего беспокоят меня при обращении ко второму индексу и обращении к ним. Еще раз спасибо!