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é)果(沒有計(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) #這種方法也可以得到,但是得到的是類型是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)文章
解決ToPILImage時(shí)出現(xiàn)維度報(bào)錯(cuò)問題pic should be 2/3 d
這篇文章主要介紹了解決ToPILImage時(shí)出現(xiàn)維度報(bào)錯(cuò)問題pic should be 2/3 dimensional. Got 4 dimensions.具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
python基礎(chǔ)之while循環(huán)、for循環(huán)詳解及舉例
所謂循環(huán)結(jié)構(gòu)就是程序中控制某條或某些指令重復(fù)執(zhí)行的結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)之while循環(huán)、for循環(huán)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
python通過zlib實(shí)現(xiàn)壓縮與解壓字符串的方法
這篇文章主要介紹了python通過zlib實(shí)現(xiàn)壓縮與解壓字符串的方法,較為詳細(xì)的介紹了zlib的用法及使用zlib.compressobj和zlib.decompressobj對(duì)文件進(jìn)行壓縮解壓的方法,需要的朋友可以參考下2014-11-11
Python3爬蟲學(xué)習(xí)之MySQL數(shù)據(jù)庫(kù)存儲(chǔ)爬取的信息詳解
這篇文章主要介紹了Python3爬蟲學(xué)習(xí)之MySQL數(shù)據(jù)庫(kù)存儲(chǔ)爬取的信息,涉及Python3針對(duì)mysql數(shù)據(jù)庫(kù)的連接、信息存儲(chǔ)等相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
python爬取網(wǎng)易云音樂排行榜實(shí)例代碼
大家好,本篇文章主要講的是python爬取網(wǎng)易云音樂排行榜數(shù)據(jù)代碼,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12

