"Если мы самые разумные существа во вселенной... что ж, это просто угнетает". — Рекха Шарма

В этом посте мы собираемся изучить Набор данных о наблюдениях НЛО Национального центра сообщений об НЛО. Вот некоторые из вопросов, на которые мы постараемся найти ответы:

  1. В каких районах страны наиболее вероятно появление НЛО? Имеют ли наблюдения общие описания в одних и тех же местах?
  2. Есть ли какие-либо тенденции в наблюдениях НЛО с течением времени?

Набор данных

Ознакомимся с данными.

Во-первых, нам нужно прочитать данные с помощью 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’ )

В огромном количестве сообщений НЛО описываются как легкие. Это то, что ожидается перед кодированием. Однако есть одна странная форма — треугольник. Самолеты во время полета очень похожи на треугольники, не так ли?

Вывод (не серьезный!)

Инопланетяне — американцы и обычно отмечают национальные праздники США.

Инопланетяне не самые большие поклонники зимы.

Инопланетяне — городские жители и любят толпу.