尝试解决 pandas-python 中的问题

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

我有一个问题。我有点云数据,现在我必须读取并绘制点。如果有人可以帮助我,我将非常感激。我正在使用 python(pandas, matplotlib,...),并且我获得了 X、Y、Z 的所有值,但不知道如何绘制所有值以获得 3D 绘图。这些值取自点云数据,它有 170 行和 254 个 x、y、z、I、N 值的组合。

https://datalore.jetbrains.com/notebook/n9MPhjVrtrIoU1buWmQuDh/MT7MrS1buzmbD7VSDqhGqu/

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
import pandas as pd
df1 = pd.read_csv('cloud.txt',delimiter='\t')
pd.set_option('display.max_columns', None)
df1 = df1.apply (pd.to_numeric, errors='coerce')
#cloud.dropna()
df1.fillna(0,axis=0,inplace=True)
df2=df1.iloc[:,:-1]

df2.head(170)

kolone=[]
i=1
while i<6:
kolone.append(i)
i=i+1
display(kolone)
c=[]
columns=kolone*224
c=c+columns
df2.columns=c
display(df2)

#Reading the points: 1 column is x value, 2 column is y value and 
3 column is z value. 4 and 5 are intensity and noise values and 
they are not important for this.
#First row is exchanged with numerisation of columns: adding 
values 1,2,3,4,5 or x,y,z,I,N values.

x=df2[1]
y=df2[2]
z=df2[3]
r=[]
i=1
while i<225:
r.append(i)
i=i+1
#print(r)
x.columns=r
display(x)
#Reading x coordinates--224 values of x 

i=1
p=[]
while i<225:
p.append(i)
i=i+1
#print(p)
y.columns=p
display(y)
#Reading y coordinates--224 values of y 

i=1
q=[]
while i<225:
q.append(i)
i=i+1
#print(q)
z.columns=q
display(z)
#Reading z coordinates--224 values of z 
python pandas plot
1个回答
0
投票

您还没有尝试过任何事情,这有点令人沮丧。 matplotlib 的 3D 散点图的文档页面包含一个完整的示例。

费尽心思来分配列名是没有意义的。 事实上,为此使用

pandas
确实没有任何意义;您可以将 CSV 直接读入
numpy
数组。 但是,假设您有一个包含未命名列的数据框,它仍然非常简单。

在这段代码中,我创建了一个 50x3 的随机整数数组,然后将列作为列表拉出并将它们传递给分散。 您应该能够使其适应您自己的代码。

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

data = np.random.randint( 256, size=(50,3))
df = pd.DataFrame(data)

x = df[0].tolist()
y = df[1].tolist()
z = df[2].tolist()

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.scatter( x, y, z )
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.