EDA del set di dati sulla corsa allo spazio

May 08 2023
Chi? Quando? Per quanto?
Ti presentiamo gli sforzi del "lancio di razzi" dell'umanità. Scopriamo il "come" in quanto tempo tentiamo davvero l'arte incredibilmente complicata del "lancio del razzo", da dove preferiamo lanciare questi cuccioli, chi è anche questo "noi" e quanto costa davvero tutto ? 1.

Ti presentiamo gli sforzi del "lancio di razzi" dell'umanità. Scopriamo
il "come" in quanto tempo tentiamo davvero l'arte incredibilmente complicata del "lancio del razzo", da dove preferiamo lanciare questi cuccioli, chi è anche questo "noi" e quanto costa davvero tuttocosto?

1.0 I contendenti

Prima raffica di informazioni. Wordcloud disegna il panorama e presenta le aziende nel modo più efficiente possibile.

Tuttavia tende a mancare di un senso di profondità, quindi daremo anche un'occhiata a un grafico più tradizionale, che consentirà di aggiungere alcuni numeri concreti nel mix.

from wordcloud import WordCloud

company_counts = df['Company Name'].value_counts()
company_dict = company_counts.to_dict()
wordcloud = WordCloud(width=800, height=400, background_color='white', colormap='viridis').generate_from_frequencies(company_dict)

plt.figure(figsize=(16, 6))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
plt.figure(figsize=(16,6))
sns.countplot(data=df, x="Company Name", order=df["Company Name"].value_counts().index)
plt.xticks(rotation=90)
plt.ylabel("Cummulative Missions")
plt.show()

I russi stanno perseguendo incessantemente la loro fame per una missione di atterraggio sulla luna di successo. Ma... è davvero tutta la storia?

1.1 La cronologia degli sforzi della missione

def extract_year(datum):
  parts = datum.split(" ")
  year = parts[3].strip()
  year = int(year)
  return year

df['Year'] = df['Datum'].apply(extract_year)
plt.figure(figsize=(7,11))
sns.scatterplot(data=df, y="Company Name", x="Year", hue="Status Mission")
plt.show()

— RVSN L'URSS ha smesso di lanciare razzi molto tempo fa. Espandiamo la profondità aggiungendo l'intensità degli sforzi annuali nel mix

Grafico a dispersione che dettaglia gli sforzi di ogni singola azienda | I punti più grandi trasmettono >80 missioni

cumulative_entries = df.groupby(['Year', 'Company Name']).cumcount() + 1
df_cumulative = df[['Year', 'Company Name']].copy()
df_cumulative['Cumulative Entries'] = cumulative_entries

plt.figure(figsize=(7, 11))
sns.scatterplot(data=df, y="Company Name", x="Year", hue="Status Mission", size=df_cumulative['Cumulative Entries'], size_norm=None)
handles, labels = plt.gca().get_legend_handles_labels()
plt.title('Space Missions by Company and Year')
plt.show()

L'intensità dello sforzo proveniente dai nuovi contendenti del gioco Rocket Launch è ben osservata nella trama sopra.

1.2 Il “Dove”

Diamo un'occhiata ai siti di lancio e ai paesi che venivano lanciati frequentemente.

Per questa visualizzazione vengono presi in considerazione solo i paesi con più di 10 lanci.

country_missions = df.groupby('Country').size().reset_index(name='Total Missions')
filtered_countries = country_missions[country_missions['Total Missions'] > 10]['Country']
filtered_df = df[df['Country'].isin(filtered_countries)]
yearly_missions = filtered_df.groupby(['Year', 'Country']).size().reset_index(name='Missions')
yearly_missions['Cumulative Missions'] = yearly_missions.groupby('Country')['Missions'].cumsum()


fig, ax = plt.subplots(figsize=(13, 7.6))
sns.lineplot(x='Year', y='Cumulative Missions', hue='Country', style='Country', data=yearly_missions)
plt.title('Countries and their utilization as a Launch Location')
plt.show()

La prospettiva si trova anche di seguito.

colors = ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b']
cmap = ListedColormap(colors)

worldmap = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
country_missions.loc[country_missions['Country'] == 'USA', 'Country'] = 'United States of America'
worldmap['Country'] = worldmap['name']
merged_worldmap = worldmap.merge(country_missions, on='Country', how='left')
fig, ax = plt.subplots(figsize=(12, 6))

merged_worldmap.plot(column='Total Missions', cmap=cmap, linewidth=0.8, edgecolor='0.8', legend=True, ax=ax, legend_kwds={'label': "Total Missions"}, missing_kwds={'color': "white"})

ax.set_title('Countries and their utilization as a Launch Location')
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')

plt.show()

Quanto spesso la missione ha successo? È sicuro?

Grafico a barre in pila :: Dettaglio del tasso di successo | barplot nato dal mare

BENE..

launch_counts = df.groupby(['Year', 'Status Mission']).size().reset_index(name='Count')
pivot_counts = launch_counts.pivot(index='Year', columns='Status Mission', values='Count').fillna(0)


sns.set_style('whitegrid')
plt.figure(figsize=(14, 5.6))
sns.barplot(x=pivot_counts.index, y=pivot_counts['Success'], color='g', label='Success')
sns.barplot(x=pivot_counts.index, y=pivot_counts['Failure'], bottom=pivot_counts['Success'], color='r', label='Failure')

plt.xlabel('Year')
plt.ylabel('Number of Launches')
plt.title('Number of Successful vs. "Failure" Launches Each Year')
plt.xticks(rotation=45)
plt.legend()

plt.show()

      
                
Companies and their track record | 4 row subplotted barplot

Osservando la distribuzione del successo di cui sopra, si noti gentilmente che la Marina degli Stati Uniti ha tentato solo il lancio di razzi all'inizio (anni '50). Con questa parte avvolta, diamo un'occhiata al costo $.

1.4 Il costo

def millions_formatter(x):
    return f"{round(x * 1e-3):,.0f}B$"
grouped_data = df.groupby('Company Name')[' Rocket'].sum().reset_index()
fig.update_layout(title='Distribution of Rocket Costs by Company')
fig.show()

from matplotlib.ticker import FuncFormatter
grouped_data = df.groupby('Year')[' Rocket'].sum().reset_index()
grouped_data[' Rocket'] = grouped_data[' Rocket'] / 1000
plt.figure(figsize=(12, 8))
sns.barplot(x='Year', y=' Rocket', data=grouped_data, color="b")
plt.xticks(rotation=45)
plt.xlabel('Year')
plt.ylabel('Expenditure in USD')
plt.title('Sum of Documented* expenses per Year')
def billions_formatter(x, pos):
    return f"{x * 1000000000 :,.0f}$"

ax = plt.gca()
ax.yaxis.set_major_formatter(FuncFormatter(billions_formatter))

plt.show()

Spendere miliardi di dollari USA può sembrare un grande investimento.

Tuttavia, non è niente , se confrontato con la stima di 1,42 trilioni di dollari USA che il mercato farmaceutico genera solo nel 2021 (concesso: phara è noto per "stampare denaro" in alcuni casi). Inoltre, l'industria manifatturiera automobilistica ha generato entrate per circa 2,86 trilioni di dollari USA nel 2021. Il trasporto spaziale ha quindi ancora la sua giusta parte di strada da percorrere.

1.5 I dati di origine

df.head(100) — Immagine per autore

nextspaceflight.com

Decollo! Grazie per aver letto.

# U S E D   L I B R A R I E S

import pandas as pd
import geopandas as gpd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
from wordcloud import WordCloud
import plotly.graph_objects as go