内容简介:手头的项目要求用 Tableau 创建一个 story,数据集是注意 track 这个维度的数据,它表示的是在订单时间内的行车轨迹,里面包含了大量坐标点。
背景
手头的项目要求用 Tableau 创建一个 story,数据集是 摩拜上海城区用户使用数据 。其中有一个维度的数据处理起来有点棘手。
数据格式
注意 track 这个维度的数据,它表示的是在订单时间内的行车轨迹,里面包含了大量坐标点。
按照 tidydata 的要求:
- Each variable forms a column.
- Each observation forms a row.
- Each type of observational unit forms a table.
我需要将 track 的坐标拆分为多行。
神来之笔
Google 了问题的解决方式,代码是
mobike.drop("track",axis = 1).join(mobike["track"].str.split("#",expand = True).stack().reset_index(level = 1,drop = True).rename("track"))
工作原理
解决问题不能光知其然,不知其所以然。所以我将这行代码逐语句进行了拆分,一探代码内部的工作原理。
最外层代码是:
mobike.join({dataset})
这里调用了 dataframe 的 join 方法,很基础。
{dataset} 这部分做的工作比较多,首先是 split 方法。Python 的 split 方法可以将字符串按照指定的字符进行分割,这个例子中指定的字符是「#」。如果不加参数 expand = True , split() 会返回拆分后的字符串数组。
mobike["track"].str.split("#")
# ["121.372,31.118","121.372,31.119","121.373,31.117","1...]
# ["121.419,31.200","121.419,31.201","121.420,31.199","1...]
# ...
加了 expand = True 会将数组拆开,数组中的每一个元素都会单独保存。
mobike["track"].str.split("#",expand = True)
# "121.372,31.118" "121.372,31.119" "121.373,31.117" "1...
# "121.419,31.200" "121.419,31.201" "121.420,31.199" "1...
# ...
到这里相当于将列中所有文本拆成了一个巨大的表,表中每个单元格有一个值。有些行拆分后的元素比较少,没有值可以填充的单元格补充 None
stack() 会把整个表逐行堆叠成一列。
这样就成功的将一列中的所有文本拆分成了多行,而且它是一个 dataframe 。不过到这里还没有结束,我们还需要将拆出来的这个 dataframe 与原数据集合并。
注意到拆分出来的 dataframe 是多重索引的,需要用 reset_index() 将多重索引重置掉。在 split() 的时候,我们引入了超级多的 None。这时候就可以通过 reset_index(..., drop =True) 将值为 None 的行删除。
与原数据集通过 join() 合并的时候, A.join(B) ,A、B两个 DataFrame 都需要有名字,因此需要 rename("track") 。
至此,我们的任务算做完了。
彩蛋
我在列拆分为多行的基础上,还将 track 拆分成了两个变量——track_x,track_y。这里用到了 pandas 的函数映射进行数据转换。
mobike["track" = mobike["track"].split(",")
mobike["track_x"] = mobike["track"].map(lambda x:x[0])
mobike["track_y"] = mobike["track"].map(lambda x:x[1])
通过 map 进行列的扩展速度非常非常快。
本文用到的摩拜数据及演示 notebook 均可在 DataWranglingMethod 下载。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Operating System Algorithms
Nathan Adams、Elisha Chirchir / CreateSpace Independent Publishing Platform / 2017-4-21 / USD 39.15
Operating System Algorithms will walk you through in depth examples of algorithms that you would find in an operating system. Selected algorithms include process and disk scheduling.一起来看看 《Operating System Algorithms》 这本书的介绍吧!