pandas處理數(shù)據(jù)時(shí)常見(jiàn)方法總結(jié)(一)

一卖漫、隔行(上下行)之間的計(jì)算

1麸祷、shift( )方法,將數(shù)據(jù)先移到同一行现诀,再進(jìn)行計(jì)算

df = pd.DataFrame(np.array([[10,24,13,5,8], [4,10,9,16,2], [17,20,16,19,6]]).reshape(5,3),columns=['a', 'b', 'c'])

df['diff'] = df['c'].shift() - df['c']

df

返回結(jié)果如圖:

image.png

shift函數(shù)原型:

df.shift(periods=1, freq=None, axis=0, fill_value=None)

其中:

  • periods:類型為int,表示移動(dòng)的幅度履肃,可以是正數(shù)仔沿,也可以是負(fù)數(shù),默認(rèn)值是1,1就表示移動(dòng)一次尺棋,注意這里移動(dòng)的都是數(shù)據(jù)封锉,而索引是不移動(dòng)的,移動(dòng)之后沒(méi)有對(duì)應(yīng)值的膘螟,就賦值為NaN

  • freq: DateOffset, timedelta, or time rule string成福,可選參數(shù),默認(rèn)值為None荆残,只適用于時(shí)間序列奴艾,如果這個(gè)參數(shù)存在,那么會(huì)按照參數(shù)值移動(dòng)時(shí)間索引内斯,而數(shù)據(jù)值沒(méi)有發(fā)生變化

  • axis:{0, 1, ‘index’, ‘columns’}蕴潦,表示移動(dòng)的方向像啼,如果是0或者’index’表示上下移動(dòng),如果是1或者’columns’潭苞,則會(huì)左右移動(dòng)

  • fill_value:移位后產(chǎn)生的空值是否填充忽冻,默認(rèn)為np.nan

2.diff()方法, diff函數(shù)是用來(lái)將數(shù)據(jù)進(jìn)行某種移動(dòng)之后與原數(shù)據(jù)進(jìn)行比較得出的差異數(shù)據(jù)

df = pd.DataFrame(np.array([[10,24,13,5,8], [4,10,9,16,2], [17,20,16,19,6]]).reshape(5,3),columns=['a', 'b', 'c'])

df.diff()

返回結(jié)果如圖:

image.png

diff()函數(shù)原型:

DataFrame.diff(periods=1, axis=0)

其中:

  • periods:移動(dòng)的幅度此疹,int類型甚颂,默認(rèn)值為1。

  • axis:移動(dòng)的方向秀菱,{0 or ‘index’, 1 or ‘columns’}振诬,如果為0或者’index’,則上下移動(dòng)衍菱,如果為1或者’columns’赶么,則左右移動(dòng)。

二脊串、Dataframe和Series 的類型區(qū)別

image.png

image.png

三辫呻、Dataframe 、Series琼锋、Python列表的排序:sort_index() 和sort_values()方法放闺,sort()sorted()方法

1、按值排序

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’)

  • 參數(shù)


    image.png
df.sort_values([‘class’,‘score’],ascending=[1,0],inplace=True)
  • 返回:
sorted_obj : DataFrame

2缕坎、按索引排序

DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind=’quicksort’,na_position=’last’, sort_remaining=True, by=None)
  • 參數(shù)


    image.png
  • 返回
sorted_obj : DataFrame

3怖侦、選取排序后的值

DataFrame.nlargest(n, columns, keep=’first’)

DataFrame.nsmallest(n, columns[, keep])

  • 參數(shù)


    image.png

    3、python 列表排序方法sort谜叹、sorted

Python list內(nèi)置sort()方法用來(lái)排序匾寝,也可以用python內(nèi)置的全局sorted()方法來(lái)對(duì)可迭代的序列排序生成新的序列。

1)排序基礎(chǔ)

簡(jiǎn)單的升序排序是非常容易的荷腊。只需要調(diào)用sorted()方法艳悔。它返回一個(gè)新的list,新的list的元素基于小于運(yùn)算符(lt)來(lái)排序女仰。

sorted([5, 2, 3, 1, 4])

[1, 2, 3, 4, 5]

也可以使用list.sort()方法來(lái)排序猜年,此時(shí)list本身將被修改。通常此方法不如sorted()方便疾忍,但是如果不需要保留原來(lái)的list乔外,此方法將更有效。

>>> a = [5, 2, 3, 1, 4]

>>> a.sort()

>>> a

[1, 2, 3, 4, 5]

另一個(gè)不同就是list.sort()方法僅被定義在list中锭碳,相反地sorted()方法對(duì)所有的可迭代序列都有效袁稽。

>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})

[1, 2, 3, 4, 5]

2)key參數(shù)/函數(shù)

從python2.4開(kāi)始勿璃,list.sort()和sorted()函數(shù)增加了key參數(shù)來(lái)指定一個(gè)函數(shù)擒抛,此函數(shù)將在每個(gè)元素比較前被調(diào)用推汽。 例如通過(guò)key指定的函數(shù)來(lái)忽略字符串的大小寫(xiě):

>>> sorted("This is a test string from Andrew".split(), key=str.lower)

['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

key參數(shù)的值為一個(gè)函數(shù),此函數(shù)只有一個(gè)參數(shù)且返回一個(gè)值用來(lái)進(jìn)行比較歧沪。這個(gè)方法很快速歹撒,因?yàn)閗ey指定的函數(shù)將準(zhǔn)確地對(duì)每個(gè)元素調(diào)用。

更廣泛的使用情況是用復(fù)雜對(duì)象的某些值來(lái)對(duì)復(fù)雜對(duì)象的序列排序诊胞,例如:

>>> student_tuples = [

('john', 'A', 15),

('jane', 'B', 12),

('dave', 'B', 10),

]

>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

3)Operator 模塊函數(shù)

上面的key參數(shù)的使用非常廣泛暖夭,因此python提供了一些方便的函數(shù)來(lái)使得訪問(wèn)方法更加容易和快速。operator模塊有itemgetter撵孤,attrgetter迈着,從2.6開(kāi)始還增加了methodcaller方法。使用這些方法邪码,上面的操作將變得更加簡(jiǎn)潔和快速:

>>> from operator import itemgetter, attrgetter

>>> sorted(student_tuples, key=itemgetter(2))

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

>>> sorted(student_objects, key=attrgetter('age'))

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

operator模塊還允許多級(jí)的排序裕菠,例如,先以grade闭专,然后再以age來(lái)排序:

>>> sorted(student_tuples, key=itemgetter(1,2))

[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

>>> sorted(student_objects, key=attrgetter('grade', 'age'))

[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

這個(gè)功能相當(dāng)于DataFrame的排序函數(shù)里參數(shù)‘by’指定的內(nèi)容奴潘,即通過(guò)什么原則進(jìn)行排序

4)升序和降序

list.sort()和sorted()都接受一個(gè)參數(shù)reverse(True or False)來(lái)表示升序或降序排序。例如對(duì)上面的student降序排序如下:

>>> sorted(student_tuples, key=itemgetter(2), reverse=True)

[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

>>> sorted(student_objects, key=attrgetter('age'), reverse=True)

[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

四影钉、通過(guò)Python操作將數(shù)據(jù)寫(xiě)入MySQL之to_sql()方法解析

DataFrame.to_sql (name画髓,con,schema = None平委,if_exists ='fail'奈虾,index = True,index_label = None廉赔,chunksize = None愚墓,dtype = None )

to_sql()將存儲(chǔ)在DataFrame中的記錄寫(xiě)入SQL數(shù)據(jù)庫(kù)。支持SQLAlchemy支持的數(shù)據(jù)庫(kù)昂勉±瞬幔可以新創(chuàng)建,附加或覆蓋表岗照。


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末村象,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子攒至,更是在濱河造成了極大的恐慌厚者,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迫吐,死亡現(xiàn)場(chǎng)離奇詭異库菲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)志膀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)熙宇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鳖擒,“玉大人,你說(shuō)我怎么就攤上這事烫止〗裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵馆蠕,是天一觀的道長(zhǎng)期升。 經(jīng)常有香客問(wèn)我,道長(zhǎng)互躬,這世上最難降的妖魔是什么播赁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮吼渡,結(jié)果婚禮上行拢,老公的妹妹穿的比我還像新娘。我一直安慰自己诞吱,他們只是感情好舟奠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著房维,像睡著了一般沼瘫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咙俩,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天耿戚,我揣著相機(jī)與錄音,去河邊找鬼阿趁。 笑死膜蛔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脖阵。 我是一名探鬼主播皂股,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼命黔!你這毒婦竟也來(lái)了呜呐?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤悍募,失蹤者是張志新(化名)和其女友劉穎蘑辑,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體坠宴,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洋魂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片副砍。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衔肢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出址晕,到底是詐尸還是另有隱情膀懈,我是刑警寧澤顿锰,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布谨垃,位于F島的核電站,受9級(jí)特大地震影響硼控,放射性物質(zhì)發(fā)生泄漏刘陶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一牢撼、第九天 我趴在偏房一處隱蔽的房頂上張望匙隔。 院中可真熱鬧,春花似錦熏版、人聲如沸纷责。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)再膳。三九已至,卻和暖如春曲横,著一層夾襖步出監(jiān)牢的瞬間喂柒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工禾嫉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灾杰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓熙参,卻偏偏與公主長(zhǎng)得像艳吠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子孽椰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354