
Spacecraft and satellites operating in deep space can generate huge amounts of data due to the complexity of their research missions.
Because of the different rotations and orbits of their host planets, these massive data packets must be transmitted to earth during specific windows of opportunity.
The role of machine learning in space exploration can be roughly divided into data transmission, visual data analytics, navigation, and rocket landing.
In this Article we will explore the space with Machine Learning using the space exploration data provided by Space X.
Lets start by importing the libraries
# IMPORTING LIBRARIES import numpy as np import matplotlib.pyplot as plt from PIL import Image %matplotlib inline import pandas as pd import seaborn as sns import itertools from wordcloud import WordCloud,STOPWORDS import io import base64 from matplotlib import rc,animation from mpl_toolkits.mplot3d import Axes3D import folium import folium.plugins import plotly.offline as py py.init_notebook_mode(connected=True) import plotly.graph_objs as go import plotly.tools as tls
Download Space X launch Data set
space_data = pd.read_csv("spacex_launch_data.csv") space_data.head()

Data Information
space_data.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 57 entries, 0 to 56 Data columns (total 11 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Flight Number 57 non-null object 1 Date 57 non-null object 2 Time (UTC) 57 non-null object 3 Booster Version 57 non-null object 4 Launch Site 57 non-null object 5 Payload 57 non-null object 6 Payload Mass (kg) 55 non-null object 7 Orbit 57 non-null object 8 Customer 57 non-null object 9 Mission Outcome 57 non-null object 10 Landing Outcome 57 non-null object dtypes: object(11) memory usage: 5.0+ KB
Data Dimensions
print ("Number of columns :",space_data.shape[1]) print ("Number of rows :",space_data.shape[0])
Number of columns : 11 Number of rows : 57
#Date manipulation import datetime space_data["Date"] = pd.to_datetime(space_data["Date"],format="%Y-%m-%d") space_data["year"] = pd.DatetimeIndex(space_data["Date"]).year space_data["month"] = pd.DatetimeIndex(space_data["Date"]).month space_data["month"] = space_data["month"].map({1:"JAN", 2:"FEB", 3:"MAR", 4:"APR", 5:"MAY", 6:"JUN", 7:"JUL", 8:"AUG", 9:"SEP", 10:"OCT", 11:"NOV", 12:"DEC"}) space_data["hour"] = space_data["Time (UTC)"].str.split(":").str[0] space_data["month_year"] = space_data["month"].astype(str) + "-" + space_data["year"].astype(str)
Total Space-X launches by year
- Space X had maximum of 18 launches in the year 2017 .
- No launches in the year 2011.
yr = space_data.groupby("year")["Flight Number"].count().reset_index() plt.figure(figsize=(12,7)) ax = sns.barplot("year","Flight Number",data=yr, palette="jet_r",linewidth=2, edgecolor=["white"]*len(yr), alpha=.9) ax.set_facecolor("k") ax.set_ylabel("Number of launches") plt.yticks(np.arange(0,22,2)) plt.title("Total launches by year") plt.grid(True,alpha=.3) plt.show()

Mission outcomes by year
- Year 2015 have a mission failure during flight.
- Since their first mission in June 2010, rockets from the Falcon 9 family have been launched 57 times, with 55 full mission successes, one partial failure and one total loss of spacecraft.
sy = pd.crosstab(space_data["year"],space_data["Mission Outcome"]) ax = sy.plot(kind="bar",stacked=True,figsize=(12,7), linewidth=1,edgecolor="w"*space_data["year"].nunique(), colors=["r","lawngreen","b"],alpha=0.9) plt.yticks(np.arange(0,22,2)) plt.grid(True,alpha=.3) plt.title("Mission outcomes by year") plt.legend(loc="upper center",prop={"size":12}) plt.xticks(rotation=0) ax.set_facecolor("k") plt.show()

Mission Success rate
- Rockets from the Falcon 9 family have been launched 57 times over 8 years, resulting in 55 full mission successes (96.5% success rate), one partial success , and one failure.
plt.figure(figsize=(8,8)) space_data["Mission Outcome"].value_counts().plot.pie(autopct="%1.1f%%", fontsize=12, colors = ["lawngreen","b","r"], wedgeprops={"linewidth":3,"edgecolor":"w"}, shadow=True) circ = plt.Circle((0,0),.7,color="white") plt.gca().add_artist(circ) plt.ylabel("") plt.title("Mission Success rate") plt.show()

Mission Failure
- Launch performance was nominal until an overpressure incident in the second-stage LOX tank, leading to vehicle breakup at T+150 seconds.
- Dragon capsule survived the explosion but was lost upon splashdown as its software did not contain provisions for parachute deployment on launch vehicle failure.
from IPython.display import YouTubeVideo failure = space_data[space_data["Mission Outcome"] == "Failure (in flight)"].transpose()[:12].reset_index() failure.columns = ["launch_details","information"] failure = failure.style.set_properties(**{'background-color': 'black', 'color': 'lawngreen', 'border-color': 'white'}).set_caption("Mission Failed") display(failure) YouTubeVideo("WTVkhp0MxMc",width=700,height=400)

Mission payload status unclear
The mission had been postponed by nearly two months. Following a nominal launch, the recovery of the first-stage booster marked the 17th successful recovery in a row.
Rumors appeared that the payload was lost, as the satellite might have failed to separate from the second stage, to which SpaceX announced that their rocket performed nominally.
The classified nature of the mission means that there is little confirmed information.
uc = space_data[space_data["Mission Outcome"] == "Success (payload\xa0status unclear)"].transpose()[:12].reset_index() uc.columns = ["launch_details","information"] uc = uc.style.set_properties(**{"background-color":"black", "color":"yellow", "border-color":"white"}).set_caption("Mission payload status unclear") uc

Launch Sites
- Cape Canaveral Air Force Station .Cape Canaveral Air Force Station Space Launch Complex 40 (SLC-40), previously Launch Complex 40 (LC-40) is a launch pad for rockets located at the north end of Cape Canaveral, Florida.
- Launch Complex 39 (LC-39) is a rocket launch site at the John F. Kennedy Space Center on Merritt Island in Florida, United States.
- Space Launch Complex 4 (SLC-4) is a launch and landing site at Vandenberg Air Force Base with two pads, both of which are used by SpaceX for Falcon 9 launch operations.
space_data["Launch_site_f"] = space_data["Launch Site"].map({"CCAFS LC-40" :"Cape Canaveral Air Force Station LC-40", "CCAFS SLC-40" :"Cape Canaveral Air Force Station LC-40", "KSC LC-39A" :"The John F. Kennedy Space Center LC-39A", "VAFB SLC-4E" :"Vandenberg Air Force Base SLC-4E"}) plt.figure(figsize=(8,6)) ax = sns.countplot(y = space_data["Launch_site_f"],palette=["b"], order=space_data["Launch_site_f"].value_counts().index, linewidth=2, edgecolor="w"*3, alpha=.9) ax.set_facecolor("k") plt.ylabel("") plt.xlabel("count") plt.yticks(color="navy",fontsize=12) plt.title("Total number of launches by sites") for i,j in enumerate(space_data["Launch_site_f"].value_counts().values.ravel()): ax.text(.7,i,j,color="w",weight="bold",fontsize=30) plt.show()

Mission outcomes by Launching sites
lm = pd.crosstab(space_data["Launch_site_f"],space_data["Mission Outcome"]) ax = lm.plot(kind="barh",stacked=True,figsize=(8,6), linewidth=2, edgecolor="w"*3, alpha = .9) plt.grid(True,alpha=.3) plt.title("Mission outcomes by Launching sites") plt.legend(loc="upper right",prop={"size":12}) plt.xticks(rotation=0) plt.ylabel("") ax.set_facecolor("k") plt.show()

Launch sites by year
ly = pd.crosstab(space_data["year"],space_data["Launch_site_f"]) ax = ly.plot(kind="bar",stacked=True,figsize=(12,7), linewidth=1, edgecolor="w"*space_data["year"].nunique(), alpha = 1) plt.xticks(rotation=0) plt.legend(loc="upper left",prop={"size":12}) plt.yticks(np.arange(0,22,2)) plt.grid(True,alpha=.3) plt.title("Lauch sites by year") ax.set_facecolor("k") plt.show()

Rocket configurations
space_data["booster"] = space_data["Booster Version"].str.split(" ").str[1] space_data["booster"] = "Falcon 9 " + space_data["booster"] space_data.loc[48,"booster"] = "Falcon Heavy" plt.figure(figsize=(12,7)) ax = space_data["booster"].value_counts().plot(kind="bar", color="Orange", linewidth=2, edgecolor="w"*space_data["booster"].nunique()) plt.xticks(rotation=0,fontsize=13,color="navy") plt.yticks(np.arange(0,28,4)) plt.grid(True,alpha=.3) plt.title("Rocket configurations") ax.set_facecolor("k") plt.show()

Rocket configurations by year
by = pd.crosstab(space_data["year"],space_data["booster"]) ax = by.plot(kind="bar",stacked=True, figsize=(12,7),colormap="rainbow", linewidth=1,edgecolor="w"*space_data["year"].nunique()) plt.xticks(rotation=0) plt.legend(loc="upper left",prop={"size":12}) plt.yticks(np.arange(0,22,2)) plt.grid(True,alpha=.3) plt.title("Rocket configurations by year") ax.set_facecolor("k") plt.show()

Tesla Roadster Payload
- The first-generation Tesla Roadster is an all-electric sports car. The red Roadster launched into space is one of Elon Musk’s privately owned vehicles.
- Musk said in a 2012 interview that the Roadster was “the one I drive to work”. The car was installed in the Falcon Heavy rocket at an inclined position above the payload adapter in order to account for the mass distribution.
tes = space_data[space_data["Payload"] == "Elon Musk's Tesla Roadster"].transpose().reset_index()[:12] tes.columns = ["launch_attribute","details"] tes = tes.style.set_properties(**{"background-color":"red", "color":"white", "border-color":"white"}).set_caption("Elon Musk's Tesla Roadster") display(tes) YouTubeVideo("q_WQ-Ds8ZvE",width=700,heith=400)

Payload word cloud
wrds = space_data[["Payload"]] plt.figure(figsize=(13,8)) wc = WordCloud(scale=5,background_color="black", colormap="cool",margin=True).generate(str(wrds)) plt.imshow(wc,interpolation="bilinear") plt.axis("off") plt.title("Payload word cloud") plt.show()

Total Payload taken to space by spacecrafts every year
space_data_nl = space_data.copy() space_data_nl = space_data_nl[(space_data_nl["Payload Mass (kg)"].notnull()) & (space_data_nl["Payload Mass (kg)"] != "Classified")] space_data_nl["Payload Mass (kg)"] = space_data_nl["Payload Mass (kg)"].astype(int) myp = space_data_nl.groupby("year")["Payload Mass (kg)"].sum().reset_index() plt.figure(figsize=(12,7)) ax = sns.pointplot("year","Payload Mass (kg)", data=myp,color="w") ax.set_facecolor("k") plt.grid(True,alpha=.3) plt.yticks(np.arange(0,110000,10000)) plt.xticks(fontsize=15,color="navy") plt.title("Total Payload taken to space by spacecrafts every year") plt.show()

Launching orbits for space crafts.
- 22 rockets are launched in GTO orbit
- 16 rockets in LEO(ISS) orbit.
- 8 rockets in LEO orbit.
- 1 rocket in Heliocentric orbit.
plt.figure(figsize=(8,8)) orb = space_data["Orbit"].value_counts().reset_index() ax = sns.barplot("Orbit","index", data=orb, linewidth=2, edgecolor="w"*len(orb), palette = "husl") ax.set_facecolor("k") plt.xlabel("count") plt.ylabel("") plt.grid(True,alpha=.3) for i,j in enumerate(orb["Orbit"].values): ax.text(.7,i,j,weight="bold",fontsize=10) plt.title("Launching orbits for space crafts") plt.show()

Word cloud for spaceX customers
wrds1 = space_data[["Customer"]] plt.figure(figsize=(14,8)) wc1 = WordCloud(scale=5,background_color="black",colormap="bwr").generate(str(wrds1)) plt.imshow(wc1,interpolation="bilinear") plt.axis("off") plt.title("Word cloud for spaceX customers") plt.show()
