成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用 Pandas 將數(shù)據(jù)集中的某列文本拆分為多行

BWrong / 1879人閱讀

摘要:按照的要求我需要將的坐標(biāo)拆分為多行。到這里相當(dāng)于將列中所有文本拆成了一個(gè)巨大的表,表中每個(gè)單元格有一個(gè)值。有些行拆分后的元素比較少,沒有值可以填充的單元格補(bǔ)充會(huì)把整個(gè)表逐行堆疊成一列。彩蛋我在列拆分為多行的基礎(chǔ)上,還將拆分成了兩個(gè)變量。

背景

手頭的項(xiàng)目要求用 Tableau 創(chuàng)建一個(gè) story,數(shù)據(jù)集是摩拜上海城區(qū)用戶使用數(shù)據(jù)。其中有一個(gè)維度的數(shù)據(jù)處理起來有點(diǎn)棘手。

數(shù)據(jù)格式

注意 track 這個(gè)維度的數(shù)據(jù),它表示的是在訂單時(shí)間內(nèi)的行車軌跡,里面包含了大量坐標(biāo)點(diǎn)。

按照 tidydata 的要求:

Each variable forms a column.

Each observation forms a row.

Each type of observational unit forms a table.

我需要將 track 的坐標(biāo)拆分為多行。

神來之筆

Google 了問題的解決方式,代碼是

mobike.drop("track",axis = 1).join(mobike["track"].str.split("#",expand = True).stack().reset_index(level = 1,drop = True).rename("track"))
工作原理

解決問題不能光知其然,不知其所以然。所以我將這行代碼逐語句進(jìn)行了拆分,一探代碼內(nèi)部的工作原理。

最外層代碼是:

mobike.join({dataset})

這里調(diào)用了 dataframe 的 join 方法,很基礎(chǔ)。

{dataset} 這部分做的工作比較多,首先是 split 方法。Python 的 split 方法可以將字符串按照指定的字符進(jìn)行分割,這個(gè)例子中指定的字符是「#」。如果不加參數(shù) expand = True,split()會(huì)返回拆分后的字符串?dāng)?shù)組。

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 會(huì)將數(shù)組拆開,數(shù)組中的每一個(gè)元素都會(huì)多帶帶保存。

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...
# ...

到這里相當(dāng)于將列中所有文本拆成了一個(gè)巨大的表,表中每個(gè)單元格有一個(gè)值。有些行拆分后的元素比較少,沒有值可以填充的單元格補(bǔ)充 None

stack() 會(huì)把整個(gè)表逐行堆疊成一列。

這樣就成功的將一列中的所有文本拆分成了多行,而且它是一個(gè) dataframe 。不過到這里還沒有結(jié)束,我們還需要將拆出來的這個(gè) dataframe 與原數(shù)據(jù)集合并。

注意到拆分出來的 dataframe 是多重索引的,需要用 reset_index() 將多重索引重置掉。在 split() 的時(shí)候,我們引入了超級(jí)多的 None。這時(shí)候就可以通過 reset_index(..., drop =True)將值為 None 的行刪除。

與原數(shù)據(jù)集通過 join() 合并的時(shí)候,A.join(B),A、B兩個(gè) DataFrame 都需要有名字,因此需要 rename("track")

至此,我們的任務(wù)算做完了。

彩蛋

我在列拆分為多行的基礎(chǔ)上,還將 track 拆分成了兩個(gè)變量——track_x,track_y。這里用到了 pandas 的函數(shù)映射進(jìn)行數(shù)據(jù)轉(zhuǎn)換。

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 進(jìn)行列的擴(kuò)展速度非常非??臁?/p>

本文用到的摩拜數(shù)據(jù)及演示 notebook 均可在 DataWranglingMethod下載。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43164.html

相關(guān)文章

  • 數(shù)據(jù)科學(xué)系統(tǒng)學(xué)習(xí)】Python # 數(shù)據(jù)分析基本操作[四] 數(shù)據(jù)規(guī)整化和數(shù)據(jù)聚合與分組運(yùn)算

    摘要:數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑數(shù)據(jù)聚合與分組運(yùn)算數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑合并數(shù)據(jù)集可根據(jù)一個(gè)或多個(gè)鍵將不同中的行鏈接起來。函數(shù)根據(jù)樣本分位數(shù)對(duì)數(shù)據(jù)進(jìn)行面元?jiǎng)澐?。字典或,給出待分組軸上的值與分組名之間的對(duì)應(yīng)關(guān)系。 本篇內(nèi)容為整理《利用Python進(jìn)行數(shù)據(jù)分析》,博主使用代碼為 Python3,部分內(nèi)容和書本有出入。 在前幾篇中我們介紹了 NumPy、pandas、matplotlib 三個(gè)...

    The question 評(píng)論0 收藏0
  • Pandas技巧大全:含具體代碼實(shí)現(xiàn)

    摘要:查看數(shù)據(jù)的基本統(tǒng)計(jì)信息。用處是用于數(shù)據(jù)讀寫處理更改提取等一系列操作的包,可以說,所有能實(shí)現(xiàn)的功能,都可以通過代碼輕松實(shí)現(xiàn),因此,對(duì)于學(xué)習(xí)非常重要。如果在里,需要翻到最低和最右,而且可能由于溢出無法窮盡可以簡單的實(shí)現(xiàn)。 放在前面的話? ? ????? ? ? ?? ????????這學(xué)期刻意少...

    netmou 評(píng)論0 收藏0
  • 如何使用pandas對(duì)超大csv文件進(jìn)行快速拆分詳解

      小編寫這篇文章的主要目的,主要是對(duì)pandas做一個(gè)較為詳細(xì)的一個(gè)解答,pandas其實(shí)就是一個(gè)數(shù)據(jù)模型庫,里面的內(nèi)容還是比較的多的,那么,怎么樣對(duì)海量的數(shù)據(jù)進(jìn)行處理呢?處理的內(nèi)容就是對(duì)超大的csv文件進(jìn)行快速拆分,下面就給大家舉例驗(yàn)證?! ∏把浴 ”疚慕榻B如何利用pandas對(duì)超大CSV文件進(jìn)行快速拆分?! ?.操作步驟  1.1安裝pandas  pipinstallpandas  1.2...

    89542767 評(píng)論0 收藏0
  • Python數(shù)據(jù)分析入門之pandas總結(jié)基礎(chǔ)(二)

    摘要:一大熊貓世界來去自如的老生常談,從基礎(chǔ)來看,我們?nèi)匀魂P(guān)心對(duì)于與外部數(shù)據(jù)是如何交互的。函數(shù)受限制問題唯一重要的參數(shù),標(biāo)志著一個(gè)的第個(gè)頁將會(huì)被取出。數(shù)據(jù)分析入門之總結(jié)基礎(chǔ)一歡迎來翔的博客查看完成版。 一.大熊貓世界來去自如:Pandas的I/O 老生常談,從基礎(chǔ)來看,我們?nèi)匀魂P(guān)心pandas對(duì)于與外部數(shù)據(jù)是如何交互的。 1.1 結(jié)構(gòu)化數(shù)據(jù)輸入輸出 read_csv與to_csv 是?對(duì)...

    verano 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<