Python數(shù)據(jù)分析處理庫(kù)-Pandas 2

五、時(shí)間操作與時(shí)間序列

5.1 時(shí)間操作

import datetime
dt = datetime.datetime(year = 2023, month = 5, day = 11, houre = 10, minute= 57)
import pandas as pd
ts = pd.Timestamp('2023-5-7')
ts.year
ts.month 
ts + pd.Timedelta('5 days')
ts + pd.Timedelta('5 day')  #都可以
pd.to_datetime('2023-5-7 12:10:10')   #構(gòu)造時(shí)間
pd.to_datetime('7/5/2023 12:10:10')
image.png

為什么上圖中的to_datetime變成了datetime64數(shù)據(jù)類(lèi)型复隆,而單個(gè)時(shí)間拨匆,變成的是Timestamp類(lèi)型

ts = pd.to_datetime(s)
ts.dt.hour  
#結(jié)果如下
0    12
1    12
2    12
dtype: int64
ts.dt.weekday

5.2 時(shí)間序列操作

pd.Series(pd.date_range(start='2023-07-05 12:10:10',periods=10, freq='12H')) #生成10個(gè)日期,間隔是12小時(shí)
data = pd.read_csv('.data/flowdata.csv', index_col = 0, parse_dates = True) #讀取數(shù)據(jù)文件挽拂,把第0列設(shè)為index惭每,并處理成日期類(lèi)型。
data[pd.Timestamp('2012-1-1 9:00'):pd.Timestamp('2012-1-1 19:00')] 
data['2013']  #取2013年數(shù)據(jù)
data['2012-12':'2013-1'] #取2012年12月到2013年1月數(shù)據(jù)
data[data.index.month ==1] #取所有月份為1月的數(shù)據(jù)
data[(data.index.hour >8) & (data.index.hour<12)]
data.between_time("08:00"亏栈,"12:00") # 會(huì)包含12點(diǎn)
data.resample('D').mean()  #按天重新采樣台腥,取均值
data.resample('D').max() #按天重新采樣,取最大值
data.resample('3D').max()   #三天
data.resample('M').max()  #月

%matplotlib notebook  #在最開(kāi)如用這個(gè)绒北,可以直接畫(huà)圖
data.resample('M').max().plot()    

六黎侈、Pandas常用操作

排序

import pandas as df
data = df.DataFrame({'group':['a','a','a','b','c','c','b','c','b',],'value':[4,3,2,1,15,72,45,23,33]})
data.sort_values(by=['group', 'value'],ascending=[False,True],inplace=True)

去重復(fù)值

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
data.drop_duplicates()   # 各列全一樣的去掉
data.drop_duplicates(subset='k1')  # k1列一樣的去掉。只保貿(mào)k1中值第一次出現(xiàn)的行

大類(lèi)合并

def food_map(series):
    if series['food'] == 'a1':
        return 'a'
    elif series['food'] == 'a2':
        return 'a'
    elif series['food'] == 'a3':
        return 'a'
    elif series['food'] == 'b1':
        return 'b'
    elif series['food'] == 'b2':
        return 'b'
    elif series['food'] == 'b3':
        return 'b'
    elif series['food'] == 'c1':
        return 'c'
    elif series['food'] == 'c2':
        return 'c'
    elif series['food'] == 'c3':
        return 'c'
data['food_map'] = data.apply(food_map, axis = 'columns')

如下的效果一樣

foodcategory={'a1':'A',
              'a2':'A',
              'a3':'A',
              'b1':'B',
              'b2':'B',
              'b3':'B',
              'c1':'C',
              'c2':'C',
              'c3':'C'             
             }
data['Category'] = data['food'].map(foodcategory)
data

列計(jì)算生成新列

import numpy as np
data = pd.DataFrame({'data1':np.random.randn(5),'data2':np.random.randn(5)})
data.assign(ration = data['data1']/ data['data2'])

生成新的DataFrame, data不變

刪除列

df2 = data.assign(ration = data['data1']/ data['data2'])
df2.drop('ration', axis='columns',inplace=True)

替換值

s = pd.Series([1,2,3,4,5,6,7])
s.replace(5,np.nan,inplace=True)

把5替換成了NaN

數(shù)據(jù)分桶

ages=[5,7,25,15,30,18,45,67,98,56,80]
bins=[1,18,35,60,80]
bin_res = pd.cut(ages,bins)
bin_res.codes
pd.value_counts(bin_res) # 查看各區(qū)段內(nèi)的數(shù)值個(gè)數(shù)
#-----------------------------------------------
(1, 18]     4
(60, 80]    2
(35, 60]    2
(18, 35]    2
dtype: int64

bin_res.labels已經(jīng)廢棄


image.png
groups=['少年','青年','中年','老年']
res2 = pd.cut(ages,bins,labels=groups)
print(res2)
print(pd.value_counts(res2))
#--------------------------------------------------------------------------------------------
[少年, 少年, 青年, 少年, 青年, ..., 中年, 老年, NaN, 中年, 老年]
Length: 11
Categories (4, object): [少年 < 青年 < 中年 < 老年]
少年    4
老年    2
中年    2
青年    2
dtype: int64

判斷是否為空

data = pd.DataFrame([range(3),[0,np.nan,0],[np.nan,0,0],range(3)])
pd.isnull(data)
data.isnull()   #這兩個(gè)都可以
#-----------------------
     0    1  2
0  0.0  1.0  2
1  0.0  NaN  0
2  NaN  0.0  0
3  0.0  1.0  2
       0      1      2
0  False  False  False
1  False   True  False
2   True  False  False
3  False  False  False
data.isnull().any()
#-----------------------------
0     True
1     True
2    False
dtype: bool
data.isnull().any(axis='columns')
#-------------------------------------
0    False
1     True
2     True
3    False
dtype: bool

data.fillna(5)
#-----------------------
      0 1   2
0   0.0 1.0 2
1   0.0 5.0 0
2   5.0 0.0 0
3   0.0 1.0 2
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闷游,一起剝皮案震驚了整個(gè)濱河市峻汉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脐往,老刑警劉巖休吠,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異业簿,居然都是意外死亡瘤礁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)梅尤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)柜思,“玉大人,你說(shuō)我怎么就攤上這事巷燥≡脱眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵矾湃,是天一觀的道長(zhǎng)亡脑。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么霉咨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任蛙紫,我火速辦了婚禮,結(jié)果婚禮上途戒,老公的妹妹穿的比我還像新娘坑傅。我一直安慰自己,他們只是感情好喷斋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布唁毒。 她就那樣靜靜地躺著,像睡著了一般星爪。 火紅的嫁衣襯著肌膚如雪浆西。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天顽腾,我揣著相機(jī)與錄音近零,去河邊找鬼。 笑死抄肖,一個(gè)胖子當(dāng)著我的面吹牛久信,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漓摩,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼裙士,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了管毙?” 一聲冷哼從身側(cè)響起腿椎,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锅风,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鞍泉,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皱埠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咖驮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片边器。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖托修,靈堂內(nèi)的尸體忽然破棺而出忘巧,到底是詐尸還是另有隱情,我是刑警寧澤睦刃,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布砚嘴,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏际长。R本人自食惡果不足惜耸采,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望工育。 院中可真熱鬧虾宇,春花似錦、人聲如沸如绸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怔接。三九已至搪泳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜕提,已是汗流浹背森书。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谎势,地道東北人凛膏。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像脏榆,于是被迫代替她去往敵國(guó)和親猖毫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容