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

问题描述 投票:-1回答:1

我是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。并能够进行这种绘图:

enter image description here

您能帮我吗?

非常感谢。

python pandas multiple-columns frequency
1个回答
0
投票

我想,这可以通过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的值。然后,您可以按照所需的方式绘制数据,似乎您已经有了清晰的想象力,应该是什么样子。希望能解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.