Python DataFrame實現(xiàn)固定周期內(nèi)統(tǒng)計每列的非零值
DataFrame實現(xiàn)固定周期內(nèi)統(tǒng)計每列的非零值
1、概述
最近做一個數(shù)值統(tǒng)計,統(tǒng)計固定周期內(nèi)(比如100行統(tǒng)一次)每列的非零值,實現(xiàn)不難,先統(tǒng)計0值個數(shù),再計算非零值個數(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)計周期數(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)計結(jié)果(沒有計算第一列“時間”)
# 對所有數(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ù)(每列計算周期內(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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決ToPILImage時出現(xiàn)維度報錯問題pic should be 2/3 d
這篇文章主要介紹了解決ToPILImage時出現(xiàn)維度報錯問題pic should be 2/3 dimensional. Got 4 dimensions.具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
python基礎(chǔ)之while循環(huán)、for循環(huán)詳解及舉例
所謂循環(huán)結(jié)構(gòu)就是程序中控制某條或某些指令重復執(zhí)行的結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)之while循環(huán)、for循環(huán)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-04-04
python通過zlib實現(xiàn)壓縮與解壓字符串的方法
這篇文章主要介紹了python通過zlib實現(xiàn)壓縮與解壓字符串的方法,較為詳細的介紹了zlib的用法及使用zlib.compressobj和zlib.decompressobj對文件進行壓縮解壓的方法,需要的朋友可以參考下2014-11-11
Python3爬蟲學習之MySQL數(shù)據(jù)庫存儲爬取的信息詳解
這篇文章主要介紹了Python3爬蟲學習之MySQL數(shù)據(jù)庫存儲爬取的信息,涉及Python3針對mysql數(shù)據(jù)庫的連接、信息存儲等相關(guān)操作技巧,需要的朋友可以參考下2018-12-12

