Python DataFrame實現(xiàn)固定周期內統(tǒng)計每列的非零值
更新時間:2024年09月12日 07:37:09 作者:南洲.
在數(shù)據(jù)處理中,使用DataFrame統(tǒng)計固定周期內每列的非零值數(shù)量是一種常見需求,通過將數(shù)據(jù)分組并使用計數(shù)函數(shù),可以方便地實現(xiàn)此目標,具體方法包括首先計算每列的0值個數(shù),然后通過總數(shù)減去0值個數(shù)得到非零值的數(shù)量
DataFrame實現(xiàn)固定周期內統(tǒng)計每列的非零值
1、概述
最近做一個數(shù)值統(tǒng)計,統(tǒng)計固定周期內(比如100行統(tǒng)一次)每列的非零值,實現(xiàn)不難,先統(tǒng)計0值個數(shù),再計算非零值個數(shù),主要是有些關于dataframe的操作技巧可以作為以后的參考。
data.csv文件數(shù)據(jù)示例格式如下:
想要得到的結果為:
2、代碼
import pandas as pd def non_zeros_count(df): s = 0 calc_interval = 5 # 統(tǒng)計周期數(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 儲存最后統(tǒng)計結果(沒有計算第一列“時間”) # 對所有數(shù)據(jù)按照每 “calc_interval” 計算每個字段中的非0個數(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值個數(shù) # np.count_nonzero(data_piece,axis = 0) #這種方法也可以得到,但是得到的是類型是ndarray non_zeros = calc_interval - count_zero # 非零值個數(shù)(每列計算周期內的總數(shù)-每列的0值數(shù)) non_zeros_to_frame = non_zeros.to_frame() # series轉dataframe non_zeros_transp = pd.DataFrame(non_zeros_to_frame.values.T, index=non_zeros_to_frame.columns, columns=non_zeros_to_frame.index) # 取轉置 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)
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決ToPILImage時出現(xiàn)維度報錯問題pic should be 2/3 d
這篇文章主要介紹了解決ToPILImage時出現(xiàn)維度報錯問題pic should be 2/3 dimensional. Got 4 dimensions.具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02python基礎之while循環(huán)、for循環(huán)詳解及舉例
所謂循環(huán)結構就是程序中控制某條或某些指令重復執(zhí)行的結構,下面這篇文章主要給大家介紹了關于python基礎之while循環(huán)、for循環(huán)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-04-04python通過zlib實現(xiàn)壓縮與解壓字符串的方法
這篇文章主要介紹了python通過zlib實現(xiàn)壓縮與解壓字符串的方法,較為詳細的介紹了zlib的用法及使用zlib.compressobj和zlib.decompressobj對文件進行壓縮解壓的方法,需要的朋友可以參考下2014-11-11Python3爬蟲學習之MySQL數(shù)據(jù)庫存儲爬取的信息詳解
這篇文章主要介紹了Python3爬蟲學習之MySQL數(shù)據(jù)庫存儲爬取的信息,涉及Python3針對mysql數(shù)據(jù)庫的連接、信息存儲等相關操作技巧,需要的朋友可以參考下2018-12-12