gpt4 book ai didi

python-2.7 - Pandas:计算数据帧行和列中零的比例

转载 作者:行者123 更新时间:2023-12-04 14:42:01 24 4
gpt4 key购买 nike

我在下面有这个代码。令我惊讶的是,它适用于列而不适用于行。

import pandas as pd

def summarizing_data_variables(df):
numberRows=size(df['ID'])
numberColumns=size(df.columns)
summaryVariables=np.empty([numberColumns,2], dtype = np.dtype('a50'))
cont=-1
for column in df.columns:
cont=cont+1
summaryVariables[cont][0]=column
summaryVariables[cont][1]=size(df[df[column].isin([0])][column])/(1.0*numberRows)
print summaryVariables

def summarizing_data_users(fileName):
print "Sumarizing users..."
numberRows=size(df['ID'])
numberColumns=size(df.columns)
summaryVariables=np.empty([numberRows,2], dtype = np.dtype('a50'))
cont=-1

for row in df['ID']:
cont=cont+1
summaryVariables[cont][0]=row
dft=df[df['ID']==row]
proportionZeros=(size(dft[dft.isin([0])])-1)/(1.0*(numberColumns-1)) # THe -1 is used to not count the ID column
summaryVariables[cont][1]=proportionZeros
print summaryVariables


if __name__ == '__main__':

df = pd.DataFrame([[1, 2, 3], [2, 5, 0.0],[3,4,5]])
df.columns=['ID','var1','var2']
print df

summarizing_data_variables(df)
summarizing_data_users(df)

输出是这样的:
   ID  var1  var2
0 1 2 3
1 2 5 0
2 3 4 5
[['ID' '0.0']
['var1' '0.0']
['var2' '0.333333333333']]
Sumarizing users...
[['1' '1.0']
['2' '1.0']
['3' '1.0']]

我期待用户:
Sumarizing users...
[['1' '0.0']
['2' '0.5']
['3' '0.0']]

似乎问题出在这一行:

dft[dft.isin([0])]



它不会像第一种情况那样将 dft 限制为“真”值。

你能帮我解决这个问题吗?
(1)如何更正用户(ROWS)部分(上面的第二个功能)?
(2) 这是最有效的方法吗? 【我的数据库很大】

编辑:

在函数 summarizing_data_variables(df) 中,我尝试评估每列中零的比例。在上面的例子中,变量 Id 没有零(因此比例为零),变量 var1 没有零(因此比例也为零)并且变量 var2 在第二行中显示为零(因此比例为 1/3)。我将这些值保存在 2D numpy.array 中,其中第一列是数据框列的标签,第二列是评估的比例。

函数 summarizing_data_users 我想做同样的事情,但我对每一行都这样做。但是,它不起作用。

最佳答案

试试这个而不是第一个功能:

print(df[df == 0].count(axis=1)/len(df.columns))

更新(更正):
print('rows')
print(df[df == 0].count(axis=1)/len(df.columns))
print('cols')
print(df[df == 0].count(axis=0)/len(df.index))

输入数据(我决定添加几行):
ID  var1  var2
1 2 3
2 5 0
3 4 5
4 10 10
5 1 0

输出:
rows
ID
1 0.0
2 0.5
3 0.0
4 0.0
5 0.5
dtype: float64
cols
var1 0.0
var2 0.4
dtype: float64

关于python-2.7 - Pandas:计算数据帧行和列中零的比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35829211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com