1 mobile_stay_duration 每个停留点白天和夜间的持续时间
transbigdata.mobile_stay_duration(
staydata,
col=['stime', 'etime'],
start_hour=8,
end_hour=20)
1.1 主要参数
staydata | 停留数据(每一行是一条数据) |
col | 列名,顺序为[‘starttime’,’endtime’] |
start_hour | 白天的开始时间 |
end_hour | 白天的结束时间 |
1.2 返回内容
duration_night | 一个panda的Series,表示夜间持续时间 |
duration_day | 一个panda的Series,表示白天持续时间 |
1.3 举例
import pandas as pd
from transbigdata import mobile_stay_duration
# 示例数据
data = {
'stime': ['2024-01-01 07:00', '2024-01-01 22:00', '2024-01-02 11:00', '2024-01-02 03:00'],
'etime': ['2024-01-01 10:00', '2024-01-02 02:00', '2024-01-02 15:00', '2024-01-02 05:00']
}
staydata = pd.DataFrame(data)
staydata['stime'] = pd.to_datetime(staydata['stime'])
staydata['etime'] = pd.to_datetime(staydata['etime'])
staydata
每一行表示在一个staypoint的开始-结束时间
result = mobile_stay_duration(staydata, col=['stime', 'etime'], start_hour=8, end_hour=20)
result
'''
(0 3600.0
1 14400.0
2 0.0
3 7200.0
dtype: float64,
0 7200.0
1 0.0
2 14400.0
3 0.0
dtype: float64)
'''
两个pandas.Series,分别表示夜间/白天持续时间
2 mobile_identify_work 识别工作地点
transbigdata.mobile_identify_work(
staydata,
col=['uid', 'stime', 'etime', 'LONCOL', 'LATCOL'],
minhour=3,
start_hour=8,
end_hour=20,
workdaystart=0,
workdayend=4)
从手机停留数据中识别工作地点。规则是确定工作日白天持续时间最长的位置(平均持续时间应超过“minhour”)
2.1 参数
staydata | 停留数据 |
col | 列名,按 [‘uid’、stime’、’etime’、’locationtag1’、’locationtag2’, …] 的顺序排列。 可以有多个“locationtag”列来指定位置 |
minhour | 工作日的最短持续时间(小时) |
workdaystart | 一周中工作日的开始(0表示周一) |
workdayend | 一周中工作日的结束 |
start_hour | 工作一天的开始时间 |
end_hout | 工作一天的结束时间 |
2.2 举例
import pandas as pd
from transbigdata import mobile_identify_work
# 示例数据
data = {
'uid': [1, 1, 1, 2, 2],
'stime': ['2024-01-01 09:00', '2024-01-02 09:30', '2024-01-03 08:45', '2024-01-06 09:15', '2024-01-07 09:45'],
'etime': ['2024-01-01 17:00', '2024-01-02 16:30', '2024-01-03 18:00', '2024-01-06 17:15', '2024-01-07 16:45'],
'LONCOL': [116.38, 116.39, 116.38, 116.40, 116.40],
'LATCOL': [39.90, 39.91, 39.90, 39.92, 39.92]
}
staydata = pd.DataFrame(data)
staydata['stime'] = pd.to_datetime(staydata['stime'])
staydata['etime'] = pd.to_datetime(staydata['etime'])
staydata
work_locations = mobile_identify_work(
staydata,
col=['uid', 'stime', 'etime', 'LONCOL', 'LATCOL'],
minhour=3,
start_hour=8,
end_hour=20,
workdaystart=0,
workdayend=4
)
work_locations
对于uid=2,他的两个停留记录(1月6日 & 1月7日是周六周日,不是工作日,所以不记录用户2的工作位置)
3 mobile_identify_home 识别居住地位置
从手机停留数据中识别居住地位置。规则是确定夜间持续时间最长的位置
staydata | 停留数据 |
col | 列名,按 [‘uid’, ‘stime’, ‘etime’, ‘locationtag1’, ‘locationtag2’, …] 的顺序排列。 可以有多个“位置标签”列来指定位置 |
start_hour | 白天时间的开始时间 |
end_hour | 白天时间的结束时间 |
3.1 举例
import pandas as pd
from transbigdata import mobile_identify_home
# 示例数据
data = {
'uid': [1, 1, 2, 2],
'stime': ['2024-01-01 22:00', '2024-01-02 23:00', '2024-01-01 22:30', '2024-01-02 21:00'],
'etime': ['2024-01-02 06:00', '2024-01-03 07:00', '2024-01-02 05:30', '2024-01-03 06:00'],
'LONCOL': [116.38, 116.39, 116.40, 116.41],
'LATCOL': [39.90, 39.91, 39.92, 39.93]
}
staydata = pd.DataFrame(data)
staydata['stime'] = pd.to_datetime(staydata['stime'])
staydata['etime'] = pd.to_datetime(staydata['etime'])
staydata
home_locations = mobile_identify_home(staydata,
col=['uid', 'stime', 'etime', 'LONCOL', 'LATCOL'],
start_hour=8,
end_hour=20)
home_locations