Всем добрый день!
У меня есть данные и я беру из них две колонки - название величины и величину. Затем величину сортирую по возрастанию и строю гистограмму первых (и также самых больших) 20 членов величины.
В чем проблема: в данных в колонке величины есть пустая строка: ''. И из-за нее не удается перевести данные из str (они в списке data лежат как str) в float. Я с этой пустой строкой уже что только не делала, но мои условия, которые я ставлю, чтоб ее выловить, с моими данными не работают. То есть на тестовом наборе все ок, а тут - не ок. Да, если понадобится, пустой член находится на месте data[2288] - до сортировки, конечно.
Второй мой вопрос: как бы мне построить гистограмму, чтобы сбоку были значения величины (колонка 13), а снизу соответствующие названия величины (колонка 1). То есть, когда я сортирую величину, список с названиями величины же остается неизменным и все путается... тут совсем не знаю, как быть.
Вот мой код:
Данные слишком большие для вложения (21 МБ), скачать можно по ссылке: https://cloud.mail.ru/public/rFcV/DqvUh6zfb
У меня есть данные и я беру из них две колонки - название величины и величину. Затем величину сортирую по возрастанию и строю гистограмму первых (и также самых больших) 20 членов величины.
В чем проблема: в данных в колонке величины есть пустая строка: ''. И из-за нее не удается перевести данные из str (они в списке data лежат как str) в float. Я с этой пустой строкой уже что только не делала, но мои условия, которые я ставлю, чтоб ее выловить, с моими данными не работают. То есть на тестовом наборе все ок, а тут - не ок. Да, если понадобится, пустой член находится на месте data[2288] - до сортировки, конечно.
Второй мой вопрос: как бы мне построить гистограмму, чтобы сбоку были значения величины (колонка 13), а снизу соответствующие названия величины (колонка 1). То есть, когда я сортирую величину, список с названиями величины же остается неизменным и все путается... тут совсем не знаю, как быть.
Вот мой код:
Python:
from matplotlib import pyplot as plt
def visualise(name):
data = []
grb = []
with open(name, 'r') as f: # считываем столбцы
for line in f:
data_list = line.split("|")
data.append(data_list[13])
grb.append(data_list[1])
mod_data = []
for i in range(1, len(data)): # убираем первую строчку и лишние пробелы
if len(data[i]) == 0: # НЕ РАБОТАЕТ!
mod_data.append(0.0)
else:
mod_data.append(data[i].strip())
mod_grb = []
for i in range(1, len(grb)): # убираем первую строчку
mod_grb.append(grb[i])
mod_data.sort()
mod_data.reverse()
final_data = []
for i in range(21): # берем 20 первых значений
final_data.append(mod_data[i])
print(final_data)
fig, ax = plt.subplots(figsize=[10, 7]) # строим гистограмму
ax.hist(final_data)
plt.show()
def show():
visualise('catalog_210923.txt') # Flux_64
if __name__ == '__main__':
show()