我正在创建这些数据:
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'
答案 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))
答案 1 :(得分:0)
创建数组data
时,numpy将数字转换为字符串。 seaborn正在尝试使用这些字符串进行数学运算,但这是行不通的。如果将列标题放在一个数组中,将数字放在另一个数组中,它将起作用。