绘制两个 Pandas 数据框列之间的差异分布

ggu*_*pta 1 python plot distribution pandas

我有一个熊猫数据框,它有列A&B

我只想绘制列A&之间差异百分比的分布图B

        A                B
  1 1.051990e+10    1.051990e+04
  2 1.051990e+10    1.051990e+04
  5 4.841800e+10    1.200000e+10
  8 2.327700e+10    2.716000e+10
  9 1.204900e+10    2.100000e+08
Run Code Online (Sandbox Code Playgroud)

分布图就像,有多少条记录有 10% 的差异,有多少条记录有 20% 的差异

我试过如下

df percCal(x,y):
  return (x-y)*100/x

df['perc'] = df.apply(lambda x: percCal(df['A'], df['B']), axis=1)
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我是新手,请帮忙

Nic*_*ais 5

你不需要lambda手术。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df1 = pd.DataFrame(np.random.randint(1, 10, (20, 2)), columns=['A', 'B'])

def percCal(x,y):
  return (x-y)*100/x
Run Code Online (Sandbox Code Playgroud)

或者,直接操作列:

df1['diff'] = (df1['A'] - df1['B']) * 100 / df1['A']
Run Code Online (Sandbox Code Playgroud)

应用函数和绘图:

df1['diff'] = percCal(df1['A'], df1['B'])
df1['diff'].plot(kind='density')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明