对一个人连接AP的数据进行处理,来得出其大致行程
- 源数据
将其转换为Dataframe,二维
有列,第一列是APmac(无线AP的硬件地址),第二列是mac(登陆者使用设备的mac地址),第三列是手机号,第四列为连接当前AP的时间,第五列为断开当前AP的时间。
本次数据处理的目的是进行简单聚类,比如A同学连接AP1,但是因为某些原因断开了5分钟(上个卫生间啥的),五分钟后又连接了这个,这样的就将其作为一条记录,开始时间为最早开始时间,结束为最晚结束时间。
# 将时间转换成时间类
df1['BeginTime'] = pd.to_datetime(df1['BeginTime'])
df1['EndTime'] = pd.to_datetime(df1['EndTime'])
'''
#遍历每一行
for i in range(2):
row = df1.iloc[i].values.tolist()
print(row)
'''
'''
遍历每一条数据,如果两条临近的记录连接的一个AP而且,上一条记录的结束时间
和下一条开始时间的时间差少于15mins就当做一条记录,让第一条记录的结束时间等于第二条记录的结束时间
删除第二条记录,这样将第一二条记录合并(忽略时间差)
'''
length = len(df1)
for i in range(length-1):#遍历,
if df1.iat[i,0] == df1.iat[i+1,0]:##两条记录连接在一个AP上
if (df1.iat[i+1,3]-df1.iat[i,4]).seconds/60 < 15:
df1.iat[i,4] = df1.iat[i+1,4]
df2 = df1.drop(labels=i+1)
for i in range(len(df2)):
row = df2.iloc[i].values.tolist()
print(row)
'''
打印apmac这一列
print(df1['apmac'])
'''
#print((df1.iat[1,3]-df1.iat[0,4]).seconds/60)
#选取具体的某个参数,x行,y列
#print(df1.iat[x,y])
用到的函数
- iat : 通过行号和列号来取值
- drop函数: drop函数默认删除行,列需要加axis = 1
print frame.drop([‘a’])#a为行名
print frame.drop([‘Ohio’], axis = 1)
DF.drop(‘column_name’,axis=1, inplace=True)
凡是会对原数组作出修改并返回一个新数组的,往往都有一个 inplace可选参数。如果手动设定为True(默认为False),那么原数组直接就被替换。也就是说,采用inplace=True之后,