如何通过numpy loadtext获取标签?

时间:2017-09-14 12:55:24

标签: python numpy matplotlib

我有一个

形式的数据文件
Col0   Col1  Col2
2015   1     4
2016   2     3

数据是浮点数,我使用numpty loadtext制作ndarray。但是,我需要跳过标签行和列以获得数据数组。如何在阅读标签的同时从数据中删除ndarray

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt("data.csv", skiprows=1) 
# I need to skip the first row in reading the data but still get the labels.
x= data[:,0]
a= data[:,1]
b= data[:,2]

plt.xlabel(COL0) # Reading the COL0 value from the file.
plt.ylabel(COL1) # Reading the COL1 value from the file.
plt.plot(x,a)

注意:脚本中的标签(列标题)未知。该脚本应该是通用的,以处理相同结构的任何输入文件。

2 个答案:

答案 0 :(得分:4)

使用genfromtxt,可以在元组中获取名称。您可以查询姓名,也可以使用dtype.names[n]将名称输入变量,其中n是索引。

import numpy as np
import matplotlib.pyplot as plt

data = np.genfromtxt('data.csv', names=True)

x = data[data.dtype.names[0]] # In this case this equals data['Col1'].
a = data[data.dtype.names[1]]
b = data[data.dtype.names[2]]

plt.figure()
plt.plot(x, a)
plt.xlabel(data.dtype.names[0])
plt.ylabel(data.dtype.names[1])
plt.show()

答案 1 :(得分:0)

这不是实际问题的答案,但我觉得你可能有兴趣知道如何用熊猫而不是numpy做同样的事情。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("data.csv", delim_whitespace=True)

df.set_index(df.columns[0]).plot()

plt.show()

会导致

enter image description here

可以看出,无需知道任何列名称,并且图表会自动标记。

当然,数据也可用于用matplotlib绘制:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("data.csv", delim_whitespace=True)
x = df[df.columns[0]]
a = df[df.columns[1]]
b = df[df.columns[2]]

plt.figure()
plt.plot(x, a)
plt.xlabel(df.columns[0])
plt.ylabel(df.columns[1])
plt.show()