Как рассчитать частоту с pandas из 2 столбцов и сделать 3D-график в matplotlib - PullRequest
0 голосов
/ 27 февраля 2020

Я новичок в python. Я хотел бы рассчитать точность файла из двух столбцов. Этот файл содержит 5 миллионов строк или более. Например,

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" для создания графика 3D в matplotlib, потому что я не знаю, как рассчитать Z для набора значений 2D, учитывая x и y. И быть в состоянии сделать такой вид сюжета:

enter image description here

Можете ли вы помочь мне, пожалуйста?

Большое спасибо.

1 Ответ

0 голосов
/ 27 февраля 2020

Полагаю, тогда это можно просто решить с помощью 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)

Я генерирую некоторые случайные данные, а затем просто применяю другой столбец к кадру данных. Используя лямбда-функцию, я могу работать с элементами из других столбцов в каждой строке и вычислять значение для Z для каждой строки. После этого вы можете отображать данные так, как хотите, кажется, у вас уже есть четкое воображение, как это должно выглядеть. Надеюсь, это решит вашу проблему.

...