【问题标题】:how calculate frequency with pandas from 2 columns and doing a 3d plot in matplotlib如何用 2 列中的 pandas 计算频率并在 matplotlib 中绘制 3d 图
【发布时间】:2020-02-26 22:15:55
【问题描述】:

我是 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。并且能够做出这样的情节:

你能帮帮我吗?

非常感谢。

【问题讨论】:

  • “计算文件的频率”是什么意思?频率信息是否在其中一列中?
  • 嗨Lepakk,我要计算两列的频率,不是一一计算
  • 抱歉,我还是不明白你的频率应该是多少。但是我是否正确,您的 A 和 B 列应该是图中的 X 和 Y 坐标?然后根据 X 和 Y 数据计算 Z 值?如果您能提供更多关于您的数据实际含义的信息,也许会有所帮助。
  • 是的,A 和 B 列应该是 X 和 Y 坐标。然后根据 X 和 Y 数据计算 Z 值。我想绘制类似于 matplotlib.org/mpl_toolkits/mplot3d/tutorial.html 的绘图。我不知道如何定义 Z,我想那是频率,就像一个直方图,但在 3D 上。
  • 每一行的操作是否类似于 Z=(X 的某个函数) * (Y 的某个函数)?

标签: python pandas multiple-columns frequency


【解决方案1】:

我猜,那么这可以简单地用 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 的值。之后你可以按照你想要的方式绘制数据,看起来你已经有了清晰的想象,应该是什么样子。 我希望,这可以解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 2013-07-19
    • 2013-08-06
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    相关资源
    最近更新 更多