最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Pandas和Numpy按時(shí)間戳將數(shù)據(jù)以Groupby方式分組

 更新時(shí)間:2019年07月22日 11:03:45   作者:白首太玄經(jīng)丶  
這篇文章主要介紹了利用Pandas和Numpy按時(shí)間戳將數(shù)據(jù)以Groupby方式分組,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

首先說一下需求,我需要將數(shù)據(jù)以分鐘為單位進(jìn)行分組,然后每一分鐘內(nèi)的數(shù)據(jù)作為一行輸出,因?yàn)椴煌瑫r(shí)間的數(shù)據(jù)量不一樣,所以所有數(shù)據(jù)按照最長的那組數(shù)據(jù)為準(zhǔn),不足的數(shù)據(jù)以各自的最后一個(gè)數(shù)據(jù)進(jìn)行補(bǔ)足。

之后要介紹一下我的數(shù)據(jù)源,之前沒用的數(shù)據(jù)列已經(jīng)去除,我只留下要用到的數(shù)據(jù)data列和時(shí)間戳time列,時(shí)間戳是以秒計(jì)的,可以看到一共是407454行。

     data     time
0    6522.50 1.530668e+09
1    6522.66 1.530668e+09
2    6523.79 1.530668e+09
3    6523.79 1.530668e+09
4    6524.82 1.530668e+09
5    6524.35 1.530668e+09
6    6523.66 1.530668e+09
7    6522.64 1.530668e+09
8    6523.25 1.530668e+09
9    6523.88 1.530668e+09
10   6525.30 1.530668e+09
11   6525.70 1.530668e+09
...     ...      ...
407443 6310.69 1.531302e+09
407444 6310.55 1.531302e+09
407445 6310.42 1.531302e+09
407446 6310.40 1.531302e+09
407447 6314.03 1.531302e+09
407448 6314.04 1.531302e+09
407449 6312.84 1.531302e+09
407450 6312.57 1.531302e+09
407451 6312.56 1.531302e+09
407452 6314.04 1.531302e+09
407453 6314.04 1.531302e+09
 
[407454 rows x 2 columns]

開始進(jìn)行數(shù)據(jù)處理,定義一個(gè)函數(shù),輸入為一個(gè)DataFrame和時(shí)間列的命名。

def getdata_time(dataframe,name):
 dataframe[name] = dataframe[name]/60  #將時(shí)間轉(zhuǎn)換為分鐘
 dataframe[name] = dataframe[name].astype('int64')
 
 datalen = dataframe.groupby(name).count().max()   #獲取數(shù)據(jù)最大長度
 
 timeframe = dataframe.groupby(name).count().reset_index()#為了獲取時(shí)間將分組后時(shí)間轉(zhuǎn)換為DataFrame
 timeseries = timeframe['time']    
 
 array = []   #建立一個(gè)空數(shù)組以便存值
 for time, group in dataframe.groupby(name): 
 
 tmparray = numpy.array(group['data']) #將series轉(zhuǎn)換為數(shù)組并添加到總數(shù)組中
 array.append(tmparray)
 
 notimedata = pandas.DataFrame(array)
 notimedata = notimedata.fillna(method='ffill',axis = 1,limit=datalen[0]) #將缺失值補(bǔ)全
 notimedata[datalen[0]+1] = timeseries  #把時(shí)間添加到最后一列
 
 return notimedata

下面將逐行進(jìn)行分析,首先要以每分鐘為依據(jù)進(jìn)行分組,那么將秒計(jì)的時(shí)間戳除以60變?yōu)榉昼?,轉(zhuǎn)換為int型是為了觀察方便(更改類型是否會導(dǎo)致數(shù)據(jù)精度缺失影響結(jié)果并不清楚,如果有了解的人看到歡迎指出,謝謝)。

datalen是我們要用到的每分鐘中最大的數(shù)據(jù)長度,用來作為標(biāo)齊依據(jù)。DataFrame.groupby.count()是分別顯示每組數(shù)據(jù)的個(gè)數(shù),并不是顯示有多少個(gè)分組,如果想要獲取分組后每一組的index就需要用到下一行的reset_index方法,之所以不直接用reset_index而是在count()方法后調(diào)用是因?yàn)間roupby分組后的結(jié)果不是一個(gè)DataFrame,而經(jīng)過count()(不僅僅是count,對分組數(shù)據(jù)操作的方法都可以,只要得出的結(jié)果是與每一組的index一一對應(yīng)即可)操作后就可以得到一個(gè)以index為一列,另一列是count結(jié)果的DataFrame。以下為直接進(jìn)行reset_index操作的報(bào)錯:

AttributeError: Cannot access callable attribute 'reset_index' of 'DataFrameGroupBy' objects, try using the 'apply' method

以下為經(jīng)過count操作后的reset_index方法顯示結(jié)果,可以看到一共分為了10397組:

      time data
0   25511135  33
1   25511136  18
2   25511137  25
3   25511138  42
4   25511139  36
5   25511140   7
6   25511141  61
7   25511142  45
8   25511143  46
9   25511144  19
10   25511145  21
...     ...  ...
10387 25521697   3
10388 25521698   9
10389 25521699  16
10390 25521700  13
10391 25521701   4
10392 25521702  34
10393 25521703  124
10394 25521704  302
10395 25521705  86
10396 25521706  52
 
[10397 rows x 2 columns]

提取的timeseries將在最后數(shù)據(jù)整合時(shí)使用?,F(xiàn)在開始將每組數(shù)據(jù)提取,首先建立一個(gè)空的數(shù)組用來存放,然后利用for循環(huán)獲取每一組的信息,time即為分組的index,group即為每一分組的內(nèi)容,將數(shù)據(jù)從group['data']中取出并添加到之前建立的空數(shù)組里,循環(huán)操作過后轉(zhuǎn)換為DataFrame,當(dāng)然這個(gè)DataFrame中包含了大量缺失值,因?yàn)樗牧袛?shù)是以最長的數(shù)據(jù)為準(zhǔn)。如下:

     0    1    2    3   ...  1143 1144 1145 1146
0   6522.50 6522.66 6523.79 6523.79 ...  NaN  NaN  NaN  NaN
1   6523.95 6524.90 6525.00 6524.35 ...  NaN  NaN  NaN  NaN
2   6520.87 6520.00 6520.45 6520.46 ...  NaN  NaN  NaN  NaN
3   6516.34 6516.26 6516.21 6516.21 ...  NaN  NaN  NaN  NaN
4   6513.28 6514.00 6514.00 6514.00 ...  NaN  NaN  NaN  NaN
5   6511.98 6511.98 6511.99 6513.00 ...  NaN  NaN  NaN  NaN
6   6511.00 6511.00 6511.00 6511.00 ...  NaN  NaN  NaN  NaN
7   6511.70 6511.78 6511.99 6511.99 ...  NaN  NaN  NaN  NaN
8   6509.51 6510.00 6510.80 6510.80 ...  NaN  NaN  NaN  NaN
9   6511.36 6510.00 6510.00 6510.00 ...  NaN  NaN  NaN  NaN
10   6507.00 6507.00 6507.00 6507.00 ...  NaN  NaN  NaN  NaN
...    ...   ...   ...   ... ...  ...  ...  ...  ...
10386 6333.77 6331.31 6331.30 6333.19 ...  NaN  NaN  NaN  NaN
10387 6331.68 6331.30 6331.68   NaN ...  NaN  NaN  NaN  NaN
10388 6331.30 6331.30 6331.00 6331.00 ...  NaN  NaN  NaN  NaN
10389 6330.93 6330.92 6330.92 6330.93 ...  NaN  NaN  NaN  NaN
10390 6330.83 6330.83 6330.90 6330.80 ...  NaN  NaN  NaN  NaN
10391 6327.57 6326.00 6326.00 6325.74 ...  NaN  NaN  NaN  NaN
10392 6327.57 6329.70 6328.85 6328.85 ...  NaN  NaN  NaN  NaN
10393 6323.54 6323.15 6323.15 6322.77 ...  NaN  NaN  NaN  NaN
10394 6311.00 6310.83 6310.83 6310.50 ...  NaN  NaN  NaN  NaN
10395 6311.45 6311.32 6310.01 6310.01 ...  NaN  NaN  NaN  NaN
10396 6310.46 6310.46 6310.56 6311.61 ...  NaN  NaN  NaN  NaN
 
[10397 rows x 1147 columns]

可以看到行數(shù)是分組個(gè)數(shù),一共1147列也是最多的那組數(shù)據(jù)長度。

之后我們通過調(diào)用fillna方法將缺失值進(jìn)行填充,method='ffill'是指以缺失值前一個(gè)數(shù)據(jù)為依據(jù),axis = 1是以行為單位,limit是指最大填充長度。最終,把我們之前取得的timeseries添加到最后一列,就得到了需求的最終結(jié)果。

     0    1    2    ...    1145   1146   1148
0   6522.50 6522.66 6523.79  ...   6522.14 6522.14 25511135
1   6523.95 6524.90 6525.00  ...   6520.00 6520.00 25511136
2   6520.87 6520.00 6520.45  ...   6517.00 6517.00 25511137
3   6516.34 6516.26 6516.21  ...   6514.00 6514.00 25511138
4   6513.28 6514.00 6514.00  ...   6511.97 6511.97 25511139
5   6511.98 6511.98 6511.99  ...   6511.00 6511.00 25511140
6   6511.00 6511.00 6511.00  ...   6510.90 6510.90 25511141
7   6511.70 6511.78 6511.99  ...   6512.09 6512.09 25511142
8   6509.51 6510.00 6510.80  ...   6512.09 6512.09 25511143
9   6511.36 6510.00 6510.00  ...   6507.04 6507.04 25511144
10   6507.00 6507.00 6507.00  ...   6508.57 6508.57 25511145
11   6507.16 6507.74 6507.74  ...   6506.35 6506.35 25511146
...    ...   ...   ...  ...     ...   ...    ...
10388 6331.30 6331.30 6331.00  ...   6331.00 6331.00 25521698
10389 6330.93 6330.92 6330.92  ...   6330.99 6330.99 25521699
10390 6330.83 6330.83 6330.90  ...   6327.58 6327.58 25521700
10391 6327.57 6326.00 6326.00  ...   6325.74 6325.74 25521701
10392 6327.57 6329.70 6328.85  ...   6325.00 6325.00 25521702
10393 6323.54 6323.15 6323.15  ...   6311.00 6311.00 25521703
10394 6311.00 6310.83 6310.83  ...   6315.00 6315.00 25521704
10395 6311.45 6311.32 6310.01  ...   6310.00 6310.00 25521705
10396 6310.46 6310.46 6310.56  ...   6314.04 6314.04 25521706
 
[10397 rows x 1148 columns]

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python基礎(chǔ)知識小結(jié)之集合

    python基礎(chǔ)知識小結(jié)之集合

    本文給大家小結(jié)了一下Python中集合的基礎(chǔ)知識,非常的簡單易懂,有需要的小伙伴可以參考下。
    2015-11-11
  • 在PyCharm中實(shí)現(xiàn)添加快捷模塊

    在PyCharm中實(shí)現(xiàn)添加快捷模塊

    今天小編就為大家分享一篇在PyCharm中實(shí)現(xiàn)添加快捷模塊,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python圖書管理系統(tǒng)

    python圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python圖書管理系統(tǒng)的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 用Python的繪圖庫(matplotlib)繪制小波能量譜

    用Python的繪圖庫(matplotlib)繪制小波能量譜

    這篇文章主要介紹了用Python的繪圖庫(matplotlib)繪制小波能量譜,代碼簡單詳細(xì),思路清晰,需要的朋友可以參考下
    2021-04-04
  • python字符串基礎(chǔ)操作詳解

    python字符串基礎(chǔ)操作詳解

    這篇文章主要為大家詳細(xì)介紹了python字符串基礎(chǔ)操作,,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Python?IO文件管理的具體使用

    Python?IO文件管理的具體使用

    我們可以使用python來操作文件,比如讀取文件內(nèi)容、寫入新的內(nèi)容等,本文主要介紹了Python?IO文件管理的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • python使用openpyxl操作excel的方法步驟

    python使用openpyxl操作excel的方法步驟

    這篇文章主要介紹了python使用openpyxl操作excel的方法步驟,詳細(xì)的介紹了openpyxl的常用屬性以及操作excel的方法,感興趣的可以了解一下
    2020-05-05
  • Python項(xiàng)目目錄找不到.git文件怎么刪除

    Python項(xiàng)目目錄找不到.git文件怎么刪除

    這篇文章主要介紹了Python項(xiàng)目目錄找不到.git文件怎么刪除的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 使用Python畫股票的K線圖的方法步驟

    使用Python畫股票的K線圖的方法步驟

    這篇文章主要介紹了使用Python畫股票的K線圖的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python中Turtle庫改變畫筆(海龜)方向的兩種方法總結(jié)

    Python中Turtle庫改變畫筆(海龜)方向的兩種方法總結(jié)

    turtle庫是python標(biāo)準(zhǔn)庫之一,入門級繪圖庫,import turtle之后即可使用,下面這篇文章主要給大家介紹了關(guān)于Python中Turtle庫改變畫筆(海龜)方向的兩種方法,需要的朋友可以參考下
    2022-11-11

最新評論

永兴县| 洞口县| 大港区| 泽普县| 布尔津县| 定安县| 霍邱县| 新郑市| 渑池县| 商洛市| 寻甸| 舞钢市| 义乌市| 健康| 鹤壁市| 高雄市| 遵义县| 柞水县| 界首市| 黔西| 临朐县| 府谷县| 宝应县| 南充市| 黄骅市| 托克逊县| 江安县| 略阳县| 汕尾市| 西乌珠穆沁旗| 普兰店市| 泗阳县| 疏附县| 凤庆县| 凤凰县| 棋牌| 唐河县| 万宁市| 古交市| 库车县| 高青县|