Python数据分析之共享单车及建模探索(CLV建模、可视化)
开发环境
4.3【开发平台及环境】
Windons 10 教育版
Python 3.7
IntelliJ IDEA 2018.2.1 / PyCharm
Googe Chrome
数据清洗 分析模块pandas,numpy
可视化模块matplotlib
上期原创:
Python数据分析之智联招聘职位分析完整项目(数据爬取,数据分析,数据可视化)
链接: https://blog.csdn.net/weixin_46205203/article/details/104187696
一:数据格式
中文字段:
订单ID,用户ID,单车类型,开始时间,开始定位,结束定位
。
注释:后续会通过geohash模块计算经纬度转换成具体距离
数据大小:
180M
前言
数据涵盖了48万 + 的单车,涵盖了近35W的骑,通过导入Geohash脚本中的decode函数,获取经纬度,用haversine公式计算球面两点间的距离。并计算和预估每个用户的消费和统计单车骑行公里数超过多少提示报修
代码
控制台输出显示所有行
from DPM_File.showed import show
import datetime
# show()
import pandas as pd
import geohash
import seaborn as sns
from math import radians, cos, sin, asin, sqrt
import matplotlib.pyplot as plt
file = 'F:/数据集/国内摩拜共享单车数据集/train.csv'
df = pd.read_csv('%s' % file, sep=',', parse_dates=['starttime'])
# 数据涵盖了48万 + 的单车,涵盖了近35W的骑
bikeid_size, userid_size = df['bikeid'].unique().size, df.userid.unique().size
print(bikeid_size, '辆单车 ', userid_size, '用户')
# 抽取1%的数据
df = df.sample(frac=0.002)
print('抽取20%的数据:', len(df))
# 通过导入Geohash脚本中的decode函数,获取经纬度
df["start_lat_lng"] = df["geohashed_start_loc"].apply(lambda s: geohash.decode(s))
df["end_lat_lng"] = df["geohashed_end_loc"].apply(lambda s: geohash.decode(s))
# # 获取出发地点所在区块周围的8个相邻区块编码
# df['start_neighbors'] = df['geohashed_start_loc'].apply(lambda s: mzgeohash.neighbors(s))
# # 提取区块对应的6位Geohash编码
# df["geohashed_start_loc_6"] = df["geohashed_start_loc"].apply(lambda s: s[0:6])
# df["geohashed_end_loc_6"] = df["geohashed_end_loc"].apply(lambda s: s[0:6])
# # 获取出发地点所在区块周围的8个相邻区块的6位Geohash编码
# df["start_neighbors_6"] = df["geohashed_start_loc_6"].apply(lambda s: mzgeohash.neighbors(s))
# print(df.head(5))
print