数据格式如下:
······
1107 1385331000000 1.3142511607126754
1107 1385331000000 0.0021683196661660157
1107 1385331600000 0.0021683196661660157
1107 1385331600000 1.4867805985670923
1107 1385331600000 0.0021683196661660157
1107 1385332200000 1.1697626938303243
1107 1385332800000 0.0021683196661660157
1107 1385332800000 0.005813069022279304
1107 1385332800000 1.2847329440609827
1107 1385332800000 0.0021683196661660157
1107 1385333400000 1.2891586380834603
1108 1385247600000 0.026943168177151356
1108 1385247600000 6.184696475262653
1108 1385248200000 0.05946288920050806
1108 1385248200000 6.359572785335356
1108 1385248200000 0.010602880590260044
1108 1385248800000 0.026943168177151356
1108 1385248800000 5.568047923787272
1108 1385249400000 0 0.01024202685104009
1108 1385249400000 5.213017822855314
1108 1385250000000 0.01024202685104009
1108 1385250000000 5.385327254217893
1108 1385250600000 0.016259860511678353
1108 1385250600000 4.902644074658115
1108 1385251200000 4.141288808488436
1108 1385251800000 0.05388633635430271
1108 1385251800000 4.684096694966861
1108 1385251800000 0.01024202685104009
1108 1385252400000 4.386580113177049
1108 1385253000000 4.582219390797833
1108 1385253600000 5.211061096279831
1108 1385254200000 0.02048405370208018
1108 1385254200000 3.901546051563316
1108 1385254200000 0.01024202685104009
1108 1385254800000 4.0387888693118255
······
每一行数据间是tab键隔开的
第一列是标号,第二列是UTC格式时间戳,第三列是流量数据,每行的数据是10分钟内的,现在想把同一个标号的比如第一列为1107的每一小时的数据叠加起来成为新的一行(第二列的时间可以用时间戳表示或者以时间间隔表示),完全没有头绪,请大神指点指点
Saya menyelesaikannya sendiri Walaupun ia mungkin rumit, ia boleh memenuhi keperluan
Jika ia berdasarkan siri masa, hanya gunakan penjana untuk membaca fail asal, menjana baris baharu dan kemudian mengeluarkannya.
panda boleh menyelesaikan keperluan anda, membaca data ke dalam bingkai data dan kemudian memprosesnya
Ini bergantung pada jumlah data yang anda ada
Gunakan traversal pemegang fail, jangan gunakan readlines() (memori mungkin tidak mencukupi)
Gunakan struktur data yang serupa dengan kamus untuk menyimpan maklumat anda Jika memori tidak mencukupi, anda perlu mencari cara untuk menulis maklumat perantaraan ke cakera, dsb.
Idea umum adalah seperti berikut
Apa yang anda lakukan ialah mengumpulkan statistik berdasarkan dua penunjuk: label dan jam Gunakan panda untuk membaca masuk, gunakan to_datetime untuk menukar cap masa kepada lajur masa dan kemudian dapatkan bilangan jam kemudian gunakan groupby untuk mengklasifikasikan label dan jam pada masa yang sama, dan jumlahnya.
Sila gunakan idea ini
https://www.zhihu.com/questio...
Saya rasa format data anda boleh dianalisis sedikit sebelum melakukannya
1 Lajur pertama mewakili tarikh, anda boleh menggunakannya sebagai kunci peringkat pertama tatasusunan hasil, keputusan[tarikh]2. Lajur kedua mestilah cap masa (minit), jadi jika anda memerlukan hasil mengikut jam, anda memulakan 24 elemen untuk setiap item [data] hasil, dan kuncinya ialah bilangan jam (anda boleh menggunakan bilangan jam yang sepadan) Nilai setem digunakan sebagai kunci), dan nilai kunci sepadan dengan jumlah data dalam jam ini, iaitu, tarikh keputusan
3 Selepas memulakan tatasusunan hasil, ia adalah mudah . Anda hanya melintasi fail dan memprosesnya baris demi baris Setiap baris Mula-mula baca nilai lajur pertama, seperti 1107,
kemudian kendalikan hasil[1107]. Kemudian baca lajur kedua, cari kunci cap jam yang sepadan dan tambahkan sahaja.
4 Akhir sekali, lalui tatasusunan hasil dan keluarkan hasilnya.
Anda memerlukan:
Ia boleh dilakukan dalam kurang daripada sepuluh baris kod.