python - Panda 数据框中的百分比转换函数

标签 python pandas dataframe

我看到一个函数,用于将交叉表值转换为百分比,代码是:

我真的很困惑 ser/float(ser[-1]) 的含义是什么。 ser[-1] 是什么意思,以及此代码如何将数据转换为百分比。

https://www.analyticsvidhya.com/blog/2016/01/12-pandas-techniques-python-data-manipulation/

最佳答案

表示每列除以该列的最后一个值(All行的值),转换为float

您可以通过以下方式检查:

def percConvert(ser):
    print (ser)
    print (ser[-1])
    return ser / float(ser[-1])

但是可以使用crosstab中的参数normalize=0来简化解决方案(只有 1 的列被删除):

df1 = pd.crosstab(data['Credit_History'],data['Loan_Status'], margins=True, normalize=0)

示例:

np.random.seed(123)
N = 100
data = pd.DataFrame({'Loan_Status': np.random.choice(['Y','N'], N),
                   'Credit_History':np.random.choice([0., 1.], N)})
#print (data)

def percConvert(ser):
    return ser / float(ser[-1])

df1 = pd.crosstab(data['Credit_History'],data['Loan_Status'], margins=True, normalize=0)
print (df1)
Loan_Status            N         Y
Credit_History                    
0.0             0.489362  0.510638
1.0             0.415094  0.584906
All             0.450000  0.550000

df1 = pd.crosstab(data['Credit_History'],data['Loan_Status'], margins=True)
        .apply(percConvert, axis=1)
print (df1)
Loan_Status            N         Y  All
Credit_History                         
0.0             0.489362  0.510638  1.0
1.0             0.415094  0.584906  1.0
All             0.450000  0.550000  1.0

关于python - Panda 数据框中的百分比转换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44051822/

相关文章:

python - 有条件地写入 xlsx

python - 在 Tensorflow 2.2.0 中,我的 model.history.history 在拟合数据和 validation_data 后为空

python - python多处理中池的用途

python - 如何使用 Pandas 获取表格中的单个单元格?

python - 使用 wget 下载 python3.4 时出错

python - 根据条件将一列中的值替换为另一列中的值

python - 在python中定位两条轨迹的交点

Python 数据透视表/Groupby 文本列

python - 同一模型的多个版本的 django 管理页面

python - 在 sklearn 管道后获取特征名称