生成一份乘客和航班数据,编写Python代码,完成下述数据可视化的要求。 1. 分析年度乘客总量变化情况(折线图)。 2. 分析乘客在一年中各月份的分布(柱状图)。 3. 分析乘客的类别和比重(饼图)。 4. 分析影响航空公司收入的乘客的各项属性的重要性(雷达图)。
时间: 2024-03-10 15:44:58 浏览: 221
好的,那我们先从生成数据开始。因为没有提供具体的数据格式和要求,我这里就随机生成一份数据,包含以下字段:
- flight_num: 航班号
- departure_city: 出发城市
- arrival_city: 到达城市
- departure_time: 出发时间
- arrival_time: 到达时间
- passenger_id: 乘客ID
- passenger_type: 乘客类型(普通乘客、商务乘客、头等舱乘客)
- passenger_age: 乘客年龄
- passenger_gender: 乘客性别
- ticket_price: 票价
以下是生成数据的Python代码:
```python
import random
import pandas as pd
# 生成航班号
def generate_flight_num():
return ''.join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 2)) + str(random.randint(1000, 9999))
# 生成出发城市和到达城市
cities = ['北京', '上海', '广州', '深圳', '成都', '重庆', '杭州', '南京', '武汉', '西安', '长沙', '福州']
def generate_cities():
departure_city = random.choice(cities)
arrival_city = random.choice(cities)
while arrival_city == departure_city:
arrival_city = random.choice(cities)
return departure_city, arrival_city
# 生成出发时间和到达时间
def generate_times():
departure_time = pd.Timestamp('2021-01-01') + pd.Timedelta(random.randint(0, 364), 'D') + pd.Timedelta(random.randint(0, 23), 'H') + pd.Timedelta(random.randint(0, 59), 'm')
arrival_time = departure_time + pd.Timedelta(random.randint(1, 12), 'h') + pd.Timedelta(random.randint(0, 59), 'm')
return departure_time, arrival_time
# 生成乘客ID
def generate_passenger_id():
return ''.join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', 6))
# 生成乘客类型、年龄、性别和票价
passenger_types = ['普通乘客', '商务乘客', '头等舱乘客']
def generate_passenger_info():
passenger_type = random.choice(passenger_types)
if passenger_type == '普通乘客':
passenger_age = random.randint(18, 60)
elif passenger_type == '商务乘客':
passenger_age = random.randint(25, 60)
else:
passenger_age = random.randint(30, 60)
passenger_gender = random.choice(['男', '女'])
ticket_price = round(random.uniform(500, 5000), 2)
return passenger_type, passenger_age, passenger_gender, ticket_price
# 生成数据
data = []
for i in range(10000):
flight_num = generate_flight_num()
departure_city, arrival_city = generate_cities()
departure_time, arrival_time = generate_times()
passenger_id = generate_passenger_id()
passenger_type, passenger_age, passenger_gender, ticket_price = generate_passenger_info()
data.append({
'flight_num': flight_num,
'departure_city': departure_city,
'arrival_city': arrival_city,
'departure_time': departure_time,
'arrival_time': arrival_time,
'passenger_id': passenger_id,
'passenger_type': passenger_type,
'passenger_age': passenger_age,
'passenger_gender': passenger_gender,
'ticket_price': ticket_price
})
# 转换为数据框
df = pd.DataFrame(data)
```
数据生成好了,接下来就可以进行数据可视化了。请注意,下面的代码中需要使用到matplotlib和seaborn两个库,如果没有安装可以通过以下命令进行安装:
```python
!pip install matplotlib seaborn
```
现在,我们就可以开始进行数据可视化了。
阅读全文
相关推荐

















