如何使用 2 列的 pandas 计算频率并在 matplotlib 中绘制 3d 图

how calculate frequency with pandas from 2 columns and doing a 3d plot in matplotlib

我是 python 的新人。 我想计算两列文件的频率。此文件包含 500 万行或更多行。 例如

20.735895   0.969697
20.504506   0.969697
20.500563   0.969697
20.901916   0.969697
21.295618   0.969697
21.176620   0.969697

我的脚本是这样的,但是不起作用

import sys
import pandas as pd
import numpy as np
array_txt = np.loadtxt("file.txt",usecols=(0, 1))
x = array_txt[:,0]
y = array_txt[:,1]
df = pd.DataFrame({'A':[x], 'B':[y]})
print (x)
print (y)
print (df)
count = df.groupby(['A', 'B']).size()
print(count)

我的输出应该是:

20.735895   0.969697  0.65
20.504506   0.969697  0.89
20.500563   0.969697  0.25

第三列的结果就是频率。我想得到这个结果,让变量 "Z" 在 matplotlib 中绘制 3D,因为考虑到 x 和 y,我不知道如何计算一组 2D 值的 Z。并且能做出这样的剧情:

你能帮帮我吗?

非常感谢。

我想,那么这可以用 df.apply

简单地解决
df = pd.DataFrame(np.random.randn(1000,2),columns=['A','B'])
df.A=df.A+4
df.B=df.B+1
df['Z']=df.apply(lambda row: np.sqrt(row.A)+row.B**2,axis=1)

我生成了一些随机数据,然后将另一列应用于数据框。使用 lambda 函数,我可以对每一行中其他列的元素进行操作,并计算每一行的 Z 值。之后你可以按照你想要的方式绘制数据,看起来你已经有了清晰的想象,那应该是什么样子。 希望这能解决您的问题。