系列导入但未使用的错误Python

时间:2015-07-11 06:06:37

标签: python

import numpy as np
from pandas import Series, DataFrame
import pandas as pd
import matplotlib.pyplot as plt

iris_df = DataFrame()

iris_data_path = 'Z:\WORK\Programming\Python\irisdata.csv'

iris_df = pd.read_csv(iris_data_path,index_col=False,header=None,encoding='utf-8')

iris_df.columns = ['sepal length','sepal width','petal length','petal width','class']

print iris_df.columns.values
print iris_df.head()
print iris_df.tail()
irisX = irisdata[['sepal length','sepal width','petal length','petal width']]
print irisX.tail()
irisy = irisdata['class']
print irisy.head()
print irisy.tail()

colors = ['red','green','blue']
markers = ['o','>','x']

irisyn = np.where(irisy=='Iris-setosa',0,np.where(irisy=='Iris-virginica',2,1))

Col0 = irisdata['sepal length']
Col1 = irisdata['sepal width']
Col2 = irisdata['petal length']
Col3 = irisdata['petal width']

plt.figure(num=1,figsize=(16,10))
plt.subplot(2,3.1)
for i in range(len(colors)):
    xs = Col0[irisyn==i]
    xy = Col1[irisyn==i]
    plt.scatter(xs,xy,color=colors[i],marker=markers[i])
plt.legend( ('Iris-setosa', 'Iris-versicolor', 'Iris-virginica') )
plt.xlabel(irisdata.columns[0])
plt.ylabel(irisdata.columns[1])

plt.subplot(2,3,2)
for i in range(len(colors)):
    xs = Col0[irisyn==i]
    xy = Col2[irisyn==i]
    plt.scatter(xs,xy,color=colors[i],marker=markers[i])
plt.xlabel(irisdata.columns[0])
plt.ylabel(irisdata.columns[2])

plt.subplot(2,3,3)
for i in range(len(colors)):
    xs = Col0[irisyn==i]
    xy = Col3[irisyn==i]
    plt.scatter(xs,xy,color=colors[i],marker=markers[i])
plt.xlabel(irisdata.columns[0])
plt.ylabel(irisdata.columns[3])

plt.subplot(2,3,4)
for i in range(len(colors)):
    xs = Col1[irisyn==i]
    xy = Col2[irisyn==i]
    plt.scatter(xs,xy,color=colors[i],marker=markers[i])
plt.xlabel(irisdata.columns[1])
plt.ylabel(irisdata.columns[2])

plt.subplot(2,3,5)
for i in range(len(colors)):
    xs = Col1[irisyn==i]
    xy = Col3[irisyn==i]
    plt.scatter(xs,xy,color=colors[i],marker=markers[i])
plt.xlabel(irisdata.columns[1])
plt.ylabel(irisdata.columns[3])

plt.subplot(2,3,6)
for i in range(len(colors)):
    xs = Col2[irisyn==i]
    xy = Col3[irisyn==i]
    plt.scatter(xs,xy,color=colors[i],marker=markers[i])
plt.xlabel(irisdata.columns[2])
plt.ylabel(irisdata.columns[3])
plt.show()

这是Howard Bandy的书“定量技术分析”中的代码。问题是,即使我输入的内容与书中的内容完全一样,它也会给我错误。

我仍然可以导入系列但未使用和未定义的名称irisdata错误/警告。

这是在控制台中:

代码:

  runfile('Z:/WORK/Programming/Python/Scripts/irisplotpairsdata2.py', wdir='//AMN/annex/WORK/Programming/Python/Scripts')
['sepal length' 'sepal width' 'petal length' 'petal width' 'class']
   sepal length  sepal width  petal length  petal width        class
0           5.1          3.5           1.4          0.2  Iris-setosa
1           4.9          3.0           1.4          0.2  Iris-setosa
2           4.7          3.2           1.3          0.2  Iris-setosa
3           4.6          3.1           1.5          0.2  Iris-setosa
4           5.0          3.6           1.4          0.2  Iris-setosa
     sepal length  sepal width  petal length  petal width           class
145           6.7          3.0           5.2          2.3  Iris-virginica
146           6.3          2.5           5.0          1.9  Iris-virginica
147           6.5          3.0           5.2          2.0  Iris-virginica
148           6.2          3.4           5.4          2.3  Iris-virginica
149           5.9          3.0           5.1          1.8  Iris-virginica
Traceback (most recent call last):

  File "<ipython-input-100-f0b2002668bd>", line 1, in <module>
    runfile('Z:/WORK/Programming/Python/Scripts/irisplotpairsdata2.py', wdir='//AMN/annex/WORK/Programming/Python/Scripts')

  File "C:\MyPrograms\Spyder(Python)\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile
    execfile(filename, namespace)

  File "C:\MyPrograms\Spyder(Python)\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 71, in execfile
    exec(compile(scripttext, filename, 'exec'), glob, loc)

  File "Z:/WORK/Programming/Python/Scripts/irisplotpairsdata2.py", line 24, in <module>
    irisX = irisdata[['sepal length','sepal width','petal length','petal width']]

TypeError: list indices must be integers, not list

显然,程序没有运行。

我使用spyder和python 2.7。这是他在书中使用的平台。

感谢您的任何见解。

1 个答案:

答案 0 :(得分:1)

Python没有错。您导入了Series但从未使用过,这是一个不会导致崩溃的警告。发生崩溃是因为您要取消引用之前从未定义过的变量irisdata。 (在代码中按Ctrl + f irisdata查看。)根据您的代码判断,irisdata可能需要包含Z:\WORK\Programming\Python\irisdata.csv的解析数据吗?因此,您需要解析它并将其分配给irisdata。见this post

例如

import csv
...
irisdata = list(csv.reader(open(iris_data_path, 'rb')))