目录
3.2 数据清洗 - 共享单车车辆使用频率及分布区域数据处理
3.3 数据分析 - 不同出行场景下共享出行方式选择偏好分析
3.4 数据分析 - 共享出行平台用户满意度与留存率关系分析
一、案例背景
共享出行行业作为新兴的交通模式,借助移动互联网技术,有效整合了闲置的交通资源,为人们提供了便捷、高效的出行选择。从共享单车解决 “最后一公里” 出行难题,到网约车打破传统出租车行业格局,再到共享汽车满足中长途出行需求,共享出行深刻改变了人们的出行方式和城市交通生态。然而,行业发展面临着车辆投放与运维成本高、用户信用管理难、政策监管复杂以及市场竞争激烈等挑战。通过 Python 对共享出行行业相关数据进行分析,有助于企业优化运营策略、提升用户体验、合理配置资源,在市场竞争中取得优势地位。
二、代码实现
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import requests
from bs4 import BeautifulSoup
2.1 数据收集
数据来源涵盖行业研究报告网站(如艾瑞咨询、易观智库)、共享出行平台运营数据、政府交通部门统计数据以及社交媒体上用户对共享出行的反馈。
- 从艾瑞咨询网站抓取共享出行市场规模数据:
url = 'https://www.iresearch.com.cn/report/sharing_mobility.html'
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 = []
div = soup.find('div', class_='market - size - content - box')
items = div.find_all('li')
for item in items:
year = item.find('span', class_='year - value').text.strip()
market_size = float(item.find('span', class_='size - num').text.strip().replace('亿元', ''))
market_size_data.append({'Year': year, 'Market_Size': market_size})
market_size_df = pd.DataFrame(market_size_data)
- 从某共享单车平台获取车辆使用频率及分布区域数据(假设通过数据合作协议获取并整理成 CSV 文件后读取):
bike_data = pd.read_csv('bike_usage_and_distribution.csv')
2.2 数据探索性分析
# 查看市场规模数据基本信息
print(market_size_df.info())
# 查看共享单车车辆使用频率及分布区域数据基本信息
print(bike_data.info())
# 分析共享出行市场规模随时间变化趋势
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 Sharing Mobility Market Size')
plt.xlabel('Year')
plt.ylabel('Market Size (billion yuan)')
plt.show()
# 查看不同区域共享单车的平均使用频率
area_usage_frequency = bike_data.groupby('Area')['Usage_Frequency'].mean()
plt.figure(figsize=(10, 6))
sns.barplot(x=area_usage_frequency.index, y=area_usage_frequency.values)
plt.title('Average Usage Frequency of Shared Bikes in Different Areas')
plt.xlabel('Area')
plt.ylabel('Average Usage Frequency (times per day)')
plt.xticks(rotation=45)
plt.show()
2.3 数据清洗
# 市场规模数据清洗
# 检查并处理缺失值
market_size_df.dropna(inplace = True)
# 去除重复记录
market_size_df = market_size_df.drop_duplicates()
# 共享单车车辆使用频率及分布区域数据清洗
# 处理异常使用频率数据,如使用频率为负数或过高的情况
bike_data = bike_data[(bike_data['Usage_Frequency'] > 0) & (bike_data['Usage_Frequency'] < 100)]
# 处理异常区域数据,如区域名称错误或不规范
bike_data = bike_data[bike_data['Area'].str.len() > 0]
2.4 数据分析
2.4.1 不同出行场景下共享出行方式选择偏好分析
# 假设从用户调研数据中获取出行场景(如上班、休闲、购物等)及共享出行方式(共享单车、网约车、共享汽车)选择信息
scenario_choice_data = {
'Travel_Scenario': ['Work', 'Leisure', 'Shopping', 'Work'],
'Sharing_Mobility_Type': ['Bike', 'R