个人学习记录。
c题题干:
····自 2015 年以来,共享汽车行业曾经“百花齐放”,多个项目获得巨额融资。
但因为模式过重、运营成本过高、无法盈利等问题,陆续有共享汽车公司因为
资金链断裂而倒闭。据易观发布的《2019 中国共享汽车平台创新白皮书》显
示,2019 年的共享汽车行业,是中小参与者不断出局,头部平台拉动行业重启
增长的一年。而共享汽车增速在 2019 年 5–10 月达到 2.21%,超过网约车和
线上租车。
····在以前,汽车被当作“大件”购买。而现在,由于车型更新迭代之快让人眼
花缭乱,加之受疫情影响,消费者的决策过程会变得更长。消费者有用车的欲
望、有消费升级的欲望,但他们越来越聪明了,他们想知道,有没有更轻更好
的用车方式。共享汽车的“分时租赁”模式很多的解决了这个问题。但是这种
方式的成本控制环节过多,导致盈利非常困难。
····第一阶段问题: 附件是共享汽车的位置数据集,数据集中提供了时间,经纬
度等位置信息,以及停车点上停放的车辆的数量和车辆列表。请建立数学模
型分析该城市的共享汽车使用分布情况,并且制定一个对企业最有利的共享
汽车调度方案。
import pandas as pd
data = pd.read_csv('共享汽车定位数据.csv', encoding='gb18030') # 读取csv数据
data.shape
data.head()
len(data['timestamp'].unique()) # 去重
# 输出“18988”
data['time']=data['timestamp'].apply(lambda x:x[:7]) # 截取时间戳前七位
data.head()
len(data['time'].unique())
data['time'].unique()
import matplotlib.pyplot as plt
%matplotlib inline
plt.scatter(data[(data['time']=='2019-01')&(data['total_cars']!=0)]['latitude'],
data[(data['time']=='2019-01')&(data['total_cars']!=0)]['longitude'])
图一:前七位截取到月(2019-01)
data['time']=data['timestamp'].apply(lambda x:x[:10]) # 截取时间戳前十位
data.head()
len(data['time'].unique())
data['time'].unique()
import matplotlib.pyplot as plt
%matplotlib inline
plt.scatter(data[(data['time']=='2019-01-10')&(data['total_cars']!=0)]['latitude'],
data[(data['time']=='2019-01-10')&(data['total_cars']!=0)]['longitude'])
图二: 前十位截取到日时的数据量分布(2019-01-10)
data['time']=data['timestamp'].apply(lambda x:x[:13]) # 截取时间戳前十三位
data.head()
len(data['time'].unique())
data['time'].unique()
import matplotlib.pyplot as plt
%matplotlib inline
plt.scatter(data[(data['time']=='2019-01-10 09')&(data['total_cars']!=0)]['latitude'],
data[(data['time']=='2019-01-10 09')&(data['total_cars']!=0)]['longitude'])
图三: 前十三位截取到小时(2019-01-10 09)
data['time']=data['timestamp'].apply(lambda x:x[:13]) # 截取时间戳前十六位
data.head()
len(data['time'].unique())
data['time'].unique()
import matplotlib.pyplot as plt
%matplotlib inline
plt.scatter(data[(data['time']=='2019-01-05 16:17')&(data['total_cars']!=0)]['latitude'],
data[(data['time']=='2019-01-05 16:17')&(data['total_cars']!=0)]['longitude'])
图四: 前十六位截取到分钟(2019-01-05 16:17)
data.columns
输出:Index([‘timestamp’, ‘latitude’, ‘longitude’, ‘total_cars’, ‘carsList’, ‘time’], dtype=‘object’)
data['GPS']=data.apply(lambda x:str(x['latitude'])+str(x['longitude']),axis=1) # 将经度和纬度拼接位'GPS'字段
len(data['GPS'].unique()) #总停车地点
输出 :27604(总停车点,聚点位260个类)
allcars=[]
def getlist(x):
for i in eval(x):
allcars.append(i)
data['carsList'].apply(lambda x: getlist(x))
输出:
0 None
1 None
2 None
3 None
4 None
...
1048570 None
1048571 None
1048572 None
1048573 None
1048574 None
Name: carsList, Length: 1048575, dtype: object
len(allcars)
# 输出总车辆(去重前)678520
len(set(allcars))
# 去重后输出260