Python DataFrame實(shí)現(xiàn)固定周期內(nèi)統(tǒng)計(jì)每列的非零值
DataFrame實(shí)現(xiàn)固定周期內(nèi)統(tǒng)計(jì)每列的非零值
1、概述
最近做一個(gè)數(shù)值統(tǒng)計(jì),統(tǒng)計(jì)固定周期內(nèi)(比如100行統(tǒng)一次)每列的非零值,實(shí)現(xiàn)不難,先統(tǒng)計(jì)0值個(gè)數(shù),再計(jì)算非零值個(gè)數(shù),主要是有些關(guān)于dataframe的操作技巧可以作為以后的參考。
data.csv文件數(shù)據(jù)示例格式如下:

想要得到的結(jié)果為:

2、代碼
import pandas as pd
def non_zeros_count(df):
s = 0
calc_interval = 5 # 統(tǒng)計(jì)周期數(shù)
new_columns = []
for i in range(len(df.columns)):
new_columns.append(df.columns[i]+'_non_zero_count') # 重新組織列名
non_zeros_count = pd.DataFrame(columns=df.columns[1:]) # 新建dataframe 儲(chǔ)存最后統(tǒng)計(jì)結(jié)果(沒(méi)有計(jì)算第一列“時(shí)間”)
# 對(duì)所有數(shù)據(jù)按照每 “calc_interval” 計(jì)算每個(gè)字段中的非0個(gè)數(shù)
while s + calc_interval <= df.shape[0]:
data_piece = df.iloc[s:s + calc_interval, 1:]
count_zero = data_piece.apply(lambda x: x.value_counts().get(0.0, 0.0)) # 0值個(gè)數(shù)
# np.count_nonzero(data_piece,axis = 0) #這種方法也可以得到,但是得到的是類(lèi)型是ndarray
non_zeros = calc_interval - count_zero # 非零值個(gè)數(shù)(每列計(jì)算周期內(nèi)的總數(shù)-每列的0值數(shù))
non_zeros_to_frame = non_zeros.to_frame() # series轉(zhuǎn)dataframe
non_zeros_transp = pd.DataFrame(non_zeros_to_frame.values.T,
index=non_zeros_to_frame.columns,
columns=non_zeros_to_frame.index) # 取轉(zhuǎn)置
non_zeros_count = pd.concat([non_zeros_count, non_zeros_transp]) # 數(shù)據(jù)合并
s = s + calc_interval
non_zeros_count.index = [i for i in range(non_zeros_count.shape[0])]
# non_zeros_count.values.reshape(30,24) # dataframe
non_zeros_count.columns = new_columns[1:] # 重新修改列名
non_zeros_count.to_csv('./non_zeros_count.csv',encoding= 'utf-8')
if __name__=='__main__':
sv_data = pd.read_csv('data.csv',encoding='utf-8')
non_zeros_count(sv_data)總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
對(duì)python 中re.sub,replace(),strip()的區(qū)別詳解
今天小編就為大家分享一篇對(duì)python 中re.sub,replace(),strip()的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
使用Python實(shí)現(xiàn) 學(xué)生學(xué)籍管理系統(tǒng)
這篇文章主要介紹了使用Python實(shí)現(xiàn) 學(xué)生學(xué)籍管理系統(tǒng),代碼大致分為五個(gè)函數(shù)組成,具體內(nèi)容詳情本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-11-11
python中常用的各種數(shù)據(jù)庫(kù)操作模塊和連接實(shí)例
這篇文章主要介紹了python中常用的各種數(shù)據(jù)庫(kù)操作模塊和連接實(shí)例,包括sqlite3、oracle、mysql、excel,需要的朋友可以參考下2014-05-05
Python 獲取div標(biāo)簽中的文字實(shí)例
今天小編就為大家分享一篇Python 獲取div標(biāo)簽中的文字實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
圖像檢索之基于vlfeat實(shí)現(xiàn)SIFT特征
SIFT特征的講解已經(jīng)很多了,本文就借助vlfeat對(duì)SIFT特征的提取過(guò)程做一個(gè)總結(jié)。接下來(lái)通過(guò)本文給大家介紹圖像檢索之基于vlfeat實(shí)現(xiàn)SIFT,感興趣的朋友跟隨小編一起看看吧2021-12-12
pytorch torchvision.ImageFolder的用法介紹
今天小編就為大家分享一篇pytorch torchvision.ImageFolder的用法介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python中解決浮點(diǎn)數(shù)精度問(wèn)題的常見(jiàn)方法
在Python中,浮點(diǎn)數(shù)是以雙精度(64位)存儲(chǔ)的,這種表示方式雖然能夠表示非常廣泛的數(shù)值范圍,但并不能精確表示所有的小數(shù),下面我們來(lái)看看Python是如何解決浮點(diǎn)數(shù)精度問(wèn)題的吧2025-08-08
PyTorch簡(jiǎn)單手寫(xiě)數(shù)字識(shí)別的實(shí)現(xiàn)過(guò)程
Pytorch是熱門(mén)的深度學(xué)習(xí)框架之一,通過(guò)經(jīng)典的MNIST數(shù)據(jù)集進(jìn)行快速的pytorch入門(mén),這篇文章主要給大家介紹了關(guān)于PyTorch簡(jiǎn)單手寫(xiě)數(shù)字識(shí)別的相關(guān)資料,需要的朋友可以參考下2021-11-11

