内容简介:手头的项目要求用 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 下载。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据驱动设计
[美]罗谢尔·肯(RochelleKing)、[美]伊丽莎白F.邱吉尔(Elizabeth F Churchill)、Caitlin Tan / 傅婕 / 机械工业出版社 / 2018-8 / 69.00元
本书旨在帮你了解数据引导设计的基本原则,了解数据与设计流程整合的价值,避免常见的陷阱与误区。本书重点关注定量实验与A/B测试,因为我们发现,数据分析与设计实践在此鲜有交集,但相对的潜在价值与机会缺大。本书提供了一些关于在组织中开展数据实践的观点。通过阅读这本书,你将转变你的团队的工作方式,从数据中获得大收益。后希望你可以在衡量指标的选择、佳展示方式与展示时机、测试以及设计意图增强方面,自信地表达自......一起来看看 《数据驱动设计》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
正则表达式在线测试
正则表达式在线测试