Daily Python - 怎樣對 DataFrame 數(shù)據(jù)進行降維操作

首發(fā)于微信公眾號東哥夜談。歡迎關注東哥夜談牺弄,讓我們一起聊聊個人成長姻几、投資、編程势告、電影蛇捌、運動等話題。
本帳號所有文章均為原創(chuàng)培慌。文章可以隨意轉載豁陆,但請務必注明作者。如果覺得文章有用吵护,歡迎轉發(fā)朋友圈分享盒音。


1. 緣起

昨天我們討論了如何對 Series 里面的元素進行批量操作,那么同樣的問題對 DataFrame 應該怎么做呢馅而?

2. 操作

DataFrame 有個 apply 方法祥诽,就是把函數(shù)映射到 DataFrame 里面每個 Series 上,對 Series 進行操作瓮恭。這個等于是第一次降維雄坪。

In [3]: df = pd.DataFrame(np.random.randn(4,3), columns=list('bde'), index=['Utah','Ohio','Texas','Oregon'])

In [4]: df
Out[4]:
               b         d         e
Utah    0.241315 -0.586773 -1.365804
Ohio    0.973860 -0.600773  0.437951
Texas   1.003621 -1.142369 -1.374085
Oregon -0.290861  0.728503 -1.356081

In [5]: df.apply(lambda x: x.max()-x.min())
Out[5]: 
b    1.737881
d    1.347365
e    3.404816
dtype: float64

這里的 x 就是一個 Series ,對其取最大值與最小值的差屯蹦,得到一個標量维哈;批量操作 df 形成一組標量,這組標量又形成一個 Series登澜。Series 就可以用昨天的方法進一步降維阔挠,實施批量元素操作。

那么如果想直接對 DataFrame 的元素實施批量操作怎么辦呢脑蠕?很容易想到的就是把上面兩個方法結合起來用购撼。pandas 內置了該方法跪削,即applymap,操作如下

In [12]: df.applymap(lambda x: '%.2f' % x)
Out[12]: 
            b      d      e
Utah     1.31   0.53  -0.90
Ohio    -0.43   0.24   0.16
Texas    0.35   0.91  -1.74
Oregon   0.14  -0.43   1.66

至此迂求,批量操作問題完美解決碾盐。然而,就在我得意的時候揩局,看到了魚老師對之前問題的回復毫玖,頓時覺得自己探索的好沒勁:

In [13]: round(df, 2)
Out[13]: 
           b     d     e
Utah    1.31  0.53 -0.90
Ohio   -0.43  0.24  0.16
Texas   0.35  0.91 -1.74
Oregon  0.14 -0.43  1.66

Python 自帶的 round 就可以接受 DataFrame 對象……情何以堪啊情何以堪,又是 apply 又是 map 甚至還用上 lambda谐腰,呵……

3. 總結

今天我們討論了如何對 DataFrame 進行降維操作孕豹,可以用apply 對 Series進行批量操作,也可用 applymap對元素進行批量操作十气。

而實際上励背,很多原先只對簡單對象如 int/float 之類操作的純 Python 函數(shù),居然也可以對 pandas 的 Series/DataFrame 進行操作砸西,比如abs/round 之類叶眉。但對純 Python 的 list 就不可以。

Python 為了語義上的嚴謹芹枷,對各種操作做的限制可以理解衅疙,但還是不得不贊嘆,pandas 的功能實在很好很強大鸳慈!


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末饱溢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子走芋,更是在濱河造成了極大的恐慌绩郎,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翁逞,死亡現(xiàn)場離奇詭異肋杖,居然都是意外死亡,警方通過查閱死者的電腦和手機挖函,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門状植,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怨喘,你說我怎么就攤上這事津畸。” “怎么了必怜?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵洼畅,是天一觀的道長。 經常有香客問我棚赔,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任靠益,我火速辦了婚禮丧肴,結果婚禮上,老公的妹妹穿的比我還像新娘胧后。我一直安慰自己芋浮,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布壳快。 她就那樣靜靜地躺著纸巷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眶痰。 梳的紋絲不亂的頭發(fā)上瘤旨,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音竖伯,去河邊找鬼存哲。 笑死,一個胖子當著我的面吹牛七婴,可吹牛的內容都是我干的祟偷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼打厘,長吁一口氣:“原來是場噩夢啊……” “哼修肠!你這毒婦竟也來了?” 一聲冷哼從身側響起户盯,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤嵌施,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后先舷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艰管,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年蒋川,在試婚紗的時候發(fā)現(xiàn)自己被綠了牲芋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡捺球,死狀恐怖缸浦,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情氮兵,我是刑警寧澤裂逐,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站泣栈,受9級特大地震影響卜高,放射性物質發(fā)生泄漏弥姻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一掺涛、第九天 我趴在偏房一處隱蔽的房頂上張望庭敦。 院中可真熱鬧,春花似錦薪缆、人聲如沸秧廉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疼电。三九已至,卻和暖如春减拭,著一層夾襖步出監(jiān)牢的瞬間蔽豺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工峡谊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茫虽,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓既们,卻偏偏與公主長得像濒析,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子啥纸,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容