目录
一、案例背景
太空旅游作为新兴的高端旅游领域,正从科幻设想逐步走向现实。随着航天技术的不断进步,太空旅游不再遥不可及。商业航天公司如 SpaceX、蓝色起源等的崛起,使得太空旅行的成本逐渐降低,可及性逐步提高。太空旅游涵盖亚轨道飞行体验、轨道太空站停留等多种形式,为游客提供前所未有的体验。然而,该行业面临诸多挑战,如高昂的研发和运营成本、严格的安全法规、有限的运载能力以及太空环境对人体的未知影响等。运用 Python 进行数据分析,能够帮助航天企业优化运营策略、控制成本,助力投资者评估行业潜力,推动太空旅游行业的稳健发展。
二、代码实现
python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import requests
from bs4 import BeautifulSoup
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error
from statsmodels.tsa.arima.model import ARIMA
2.1 数据收集
数据来源包含行业报告网站(如航天科技集团研究报告、国际航天大会资料)、商业航天企业官网、太空旅游预订平台数据以及政府航天管理部门统计数据。
python
# 从航天科技集团研究报告网页抓取全球太空旅游市场规模数据
url = 'https://www.casc.com.cn/report/space_travel_market'
headers = {
'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
market_size_data = []
table = soup.find('table', class_='market - size - table')
rows = table.find_all('tr')
for row in rows[1:]:
cols = row.find_all('td')
year = cols[0].text.strip()
market_size = float(cols[1].text.strip().replace('百万美元', ''))
market_size_data.append({'Year': year, 'Market_Size': market_size})
market_size_df = pd.DataFrame(market_size_data)
python
# 从某太空旅游预订平台获取客户年龄、预订类型及支付价格数据(假设通过数据合作获取CSV文件)
booking_data = pd.read_csv('space_travel_booking.csv')
2.2 数据探索性分析
python
# 查看全球太空旅游市场规模数据基本信息
print(market_size_df.info())
# 查看太空旅游预订数据基本信息
print(booking_data.info())
python
# 分析全球太空旅游市场规模随时间变化趋势
market_size_df['Year'] = pd.to_numeric(market_size_df['Year'])
plt.figure(figsize=(12, 6))
sns.lineplot(x='Year', y='Market_Size', data=market_size_df)
plt.title('Trend of Global Space Tourism Market Size')
plt.xlabel('Year')
plt.ylabel('Market Size (million US dollars)')
plt.show()
python
# 查看不同预订类型的客户年龄分布
plt.figure(figsize=(10, 6))
sns.boxplot(x='Booking_Type', y='Customer_Age', data=booking_data)
plt.title('Customer Age Distribution for Different Booking Types')
plt.xlabel('Booking Type')
plt.ylabel('Customer Age')
plt.show()
2.3 数据清洗
python
# 全球太空旅游市场规模数据清洗
# 检查并处理缺失值
market_size_df.dropna(inplace=True)
# 去除重复记录
market_size_df = market_size_df.drop_duplicates()
python
# 太空旅游预订数据清洗
# 处理异常客户年龄数据,如年龄为负数或远超合理范围
booking_data = booking_data[(booking_data['Customer_Age'] > 0) & (booking_data['Customer_Age'] < 120)]
# 处理缺失值,对于关键信息缺失的记录可考虑删除
booking_data = booking_data.dropna(subset=['Booking_Type', 'Customer_A