"Если мы самые разумные существа во вселенной... что ж, это просто угнетает". — Рекха Шарма
В этом посте мы собираемся изучить Набор данных о наблюдениях НЛО Национального центра сообщений об НЛО. Вот некоторые из вопросов, на которые мы постараемся найти ответы:
- В каких районах страны наиболее вероятно появление НЛО? Имеют ли наблюдения общие описания в одних и тех же местах?
- Есть ли какие-либо тенденции в наблюдениях НЛО с течением времени?
Набор данных
Ознакомимся с данными.
Во-первых, нам нужно прочитать данные с помощью Pandas. Поскольку есть некоторые строки, мешающие процессу чтения, мы должны их игнорировать.
import pandas as pd data = pd.read_csv(r'complete.csv',error_bad_lines=False) data.info()
Когда мы распечатаем информацию о созданном нами DataFrame, мы увидим:
RangeIndex: 88679 entries, 0 to 88678 Data columns (total 11 columns): datetime 88679 non-null object city 88679 non-null object state 81270 non-null object country 76314 non-null object shape 85757 non-null object duration (seconds) 88677 non-null object duration (hours/min) 85660 non-null object comments 88644 non-null object date posted 88679 non-null object latitude 88679 non-null object longitude 88679 non-null float64 dtypes: float64(1), object(10)
Вы можете видеть, что существует 88679 отчетов о наблюдениях и есть 11 столбцов, указывающих время и местонахождение наблюдений.
Нам нужно организовать и упорядочить данные, прежде чем работать с ними:
states = ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"] data = data.rename(columns = {‘longitude ‘:’longitude’ }) data[‘latitude’] = pd.to_numeric(data[‘latitude’], errors = ‘coerce’) data[‘datetime’] = pd.to_datetime(data[‘datetime’], errors = ‘coerce’) data[‘city’] = data[‘city’].str.title() data[‘state’] = data[‘state’].str.upper() data[‘country’] = data[‘country’].str.upper() import re data[‘city’] = data[‘city’].apply(lambda x: re.sub(“[\(\[].*?[\)\]]”, “”, x)) data[‘city’] = data[‘city’].apply(lambda x: x.strip()) data.loc[(data[‘state’].isin(states)),’country’] = ‘US’ data.insert(1,'year',data['datetime'].dt.year) data.insert(1,'month',data['datetime'].dt.month) data = data.fillna(value=0)
Когда мы проверяем страны отчетов с помощью команды data[‘country’].value_counts(normalize=True)
, мы видим, что 87% наблюдений приходятся на США. Поэтому мы в основном сосредоточимся на данных США, получив часть данных, где страна США, с помощью команды us_data = data[data[‘country’]==’US’].copy()
Наблюдения за НЛО с течением времени
Прежде всего, нам нужно опустить значения без действительной даты, запустив us_data = us_data[us_data[‘day’]!=0]
Дни
Давайте посмотрим на популярные дни, когда люди в США видят НЛО, построив график плотности дня/месяца:
import numpy as np import matplotlib import matplotlib.pyplot as plt days = list(range(1,32)) months = [‘January’,’February’,’March’,’April’,’May’,’June’,’July’,’August’,’September’,’October’,’November’,’December’] density = np.zeros((31,12)) for index,row in us_data.iterrows(): density[int(row[‘day’]-1),int(row[‘month’]-1)]+=1 fig,ax = plt.subplots() im = ax.imshow(density) ax.set_xticks(np.arange(len(months))) ax.set_yticks(np.arange(len(days))) ax.set_xticklabels(months) ax.set_yticklabels(days) plt.setp(ax.get_xticklabels(), rotation=45, ha=”right”, rotation_mode=”anchor”) for i in range(len(days)): for j in range(len(months)): text = ax.text(j, i, density[i, j], ha=”center”, va=”center”, color=”w”) ax.set_title(“The common days the UFO sightings are reported”) #fig.tight_layout() fig.set_size_inches(30, 30, forward=True) plt.show()
Как видно из графика, наиболее распространенными днями, когда люди видят НЛО, являются 4 июля, День Независимости и Новый год.
Вы видите закономерность, то ли они были пьяны, то ли был фейерверк :( Когда мы будем разбирать описания, мы вернемся к этому.
Сезоны
Давайте найдем популярные сезоны, когда люди в США видят НЛО, построив гистограмму:
plt.rcdefaults() winter = len(us_data[us_data[‘month’].isin([1,2,3])]) spring = len(us_data[us_data[‘month’].isin([4,5,6])]) summer = len(us_data[us_data[‘month’].isin([7,8,9])]) fall = len(us_data[us_data[‘month’].isin([10,11,12])]) objects = (‘Winter’,’Spring’,’Summer’,’Fall’) y_pos = np.arange(len(objects)) performance = [winter,spring,summer,fall] plt.bar(y_pos, performance, align=’center’, alpha=0.5, color=’b’) plt.xticks(y_pos, objects) plt.ylabel(‘Reports’) plt.xlabel(‘Seasons’) plt.title(‘Seasonal Sighting Information’) plt.show()
Вывод показывает, что лучшее время года для наблюдения за НЛО — лето. Мы будем копать данные, чтобы найти причины позже, но, по моему собственному мнению, основные причины следующие:
- Люди, как правило, проводят меньше времени на улице в холодную погоду.
- Небо не очень ясное, чтобы что-то увидеть зимой.
- Лето — лучшее время для холодного пива.
Годы
Что ж, я действительно не думаю, что количество отчетов за многие годы даст ценную информацию об НЛО, но в любом случае нет ничего плохого в том, чтобы делать эту работу.
us_data[us_data[‘year’]>1949][‘year’].value_counts().sort_index().plot(kind=’barh’, figsize=(10,11), title=’Sightings reported over years’)
Нет ничего удивительного, если мы рассмотрим стандарты связи до 90-х годов. Людям было нелегко сообщать, когда они видели что-то в небе. Кроме того, одной из причин может быть увеличение числа показов НЛО в кинотеатрах. Также с изменением жизненных стандартов люди стали больше ориентироваться на будущее и космос, чем это было раньше.
Наблюдения за НЛО по форме
Поскольку сообщения о значительном количестве наблюдений приходятся на период после 1950-х годов, я отфильтровал данные по годам и избавился от тех, что были до 1950-х годов, и нашел наиболее популярные описания со следующим:
us_data[(us_data[‘year’]>1949) & (us_data[‘shape’]!=0)][‘shape’].value_counts().plot(kind=’barh’, figsize=(10,5), title=’Shapes of the sightings’ )
В огромном количестве сообщений НЛО описываются как легкие. Это то, что ожидается перед кодированием. Однако есть одна странная форма — треугольник. Самолеты во время полета очень похожи на треугольники, не так ли?
Вывод (не серьезный!)
Инопланетяне — американцы и обычно отмечают национальные праздники США.
Инопланетяне не самые большие поклонники зимы.
Инопланетяне — городские жители и любят толпу.