绘图,具有多个单词名称的列

时间:2014-01-26 00:57:33

标签: matplotlib pandas

我能够读取一个看起来像这样的文件'data.csv':

Time, Upper Layer Temperature,...,
0, 450,...,
...

使用pandas:

data=pd.read_table('data.csv',header=0,sep=',')

为了绘图,我似乎无法正确使用语法:

pl.plot(data.Time,data.'Upper Layer Temperature',label="ULT")

当列名有多个以空格分隔的单词时,能够按列名绘制的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用字典样式访问而不是属性样式,即data["Upper Layer Temperature"]。例如:

>>> df = pd.DataFrame({"A": [1,2,3], "B has a space": [10,20,30]})
>>> df
   A  B has a space
0  1             10
1  2             20
2  3             30

[3 rows x 2 columns]
>>> df["B has a space"]
0    10
1    20
2    30
Name: B has a space, dtype: int64
>>> plt.plot(df["A"], df["B has a space"], label="fred")
[<matplotlib.lines.Line2D object at 0xb75106c>]

但是请注意,你在文件中阅读的方式,你可能会在列名中有一个额外的空格:

>>> !cat data.csv
Time, Upper Layer Temperature,...,
0, 450,...,
>>> data=pd.read_table('data.csv',header=0,sep=',')
>>> data.columns
Index([u'Time', u' Upper Layer Temperature', u'...', u'Unnamed: 3'], dtype='object')

您可以使用skipinitialspace=True来避免这种情况:

>>> data=pd.read_table('data.csv',header=0,sep=',',skipinitialspace=True)
>>> data.columns
Index([u'Time', u'Upper Layer Temperature', u'...', u'Unnamed: 3'], dtype='object')