简单数据集regplot中的keyerror - AttributeError:' str'对象没有属性'共轭'

时间:2017-04-20 07:57:41

标签: python pandas seaborn

我正在创建这些数据:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

data = np.array([['', 'Gross ', 'Target'],
                 [0, 728, 500],
                 [1, 701, 750],
                 [2, 590, 570],
                 [3, 548, 596]])

df = pd.DataFrame(data=data[1:, 1:], columns=data[0, 1:])
df

    Gross   Target
0   728     500
1   701     750
2   590     570
3   548     596

并尝试绘制:

sns.regplot(x='Gross', y='Target', data=df)

结果为:KeyError: 'Gross'

---更新---

修好空格后,我收到了:

AttributeError: 'str' object has no attribute 'conjugate'

2 个答案:

答案 0 :(得分:1)

字符串中有whitespace,转换为列:

print (df.columns.tolist())
['Gross ', 'Target']

一种可能的解决方案是strip

df.columns = df.columns.str.strip()
print (df.columns.tolist())
['Gross', 'Target']

或者在列名称中添加空格:

sns.regplot(x='Gross ', y='Target', data=df)
print (df.dtypes)
Gross     object
Target    object
dtype: object

sns.regplot(x='Gross', y='Target', data=df.astype(int))

graph

答案 1 :(得分:0)

创建数组data时,numpy将数字转换为字符串。 seaborn正在尝试使用这些字符串进行数学运算,但这是行不通的。如果将列标题放在一个数组中,将数字放在另一个数组中,它将起作用。