#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]
Я оставлю это на ваше усмотрение, чтобы затем выяснить точный код для получения среднего значения, но в основном вы захотите выполнить следующие три шага:
- Прежде чем вы начнете цикл, вам нужно будет создать переменную для отслеживания текущего итога
- Затем внутри цикла вы захотите добавить каждый показатель вакцинации к этому текущему итогу.
- После цикла, когда придет время разделить текущий итог на общее количество элементов, используйте функцию len, чтобы получить общее количество элементов в вашем
vacc_counties
списке. (Общее количество кортежей будет таким же, как и общее количество вакцинаций).
В качестве альтернативы, вы упомянули функцию sum в своем вопросе. Вы могли бы подумать, что нахождение среднего значения было бы единственным местом, где функция суммы могла бы пригодиться, и это возможно. Если бы вы хотели использовать функцию sum, вам понадобился бы отдельный список, в котором есть только числа. Что сделал Тамалджейк при создании своего percents
списка. Как только вы создадите этот список, вы сможете легко вызвать sum
функцию в своем списке, чтобы получить общее количество. например total = sum(list_of_numbers)
.
Комментарии:
1. Это более чем здорово! Огромное спасибо за разбивку и концептуальный обзор. Я собираюсь поработать с этим, чтобы разобраться в этом. Это отвечает на проблемы, которые больше всего беспокоят меня при обращении ко второму индексу и обращении к ним. Еще раз спасибо!