python编写代码时零_python – KeyError:运行打包代码时为0L
我有一個(gè)名為rra.py的腳本,它具有以下skelton結(jié)構(gòu):
usn=""
usnl=[]
from bs4 import BeautifulSoup
import re
import asys
import glob
import os
import sys
import sys
def inputIndex():
#some processsing
def getval():
#some processing
def parsehtml():
#some processsing
def ret():
#some processing
def main():
inputIndex()
ret()
parsehtml()
getval()
print "watsuup"
asys.Compavg()
asys.compSub()
print "nearly done"
return 0
if __name__ == '__main__':
inputIndex()
main()
asys.Compavg()
asys.compSub()
我在上面的腳本rra.py中導(dǎo)入了另一個(gè)腳本asys.py,其中包含以下內(nèi)容.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import statsmodels.api as sm
from numpy.random import randn
import matplotlib as mpl
import seaborn as sns
sns.set_color_palette("deep", desat=.6)
mpl.rc("figure", figsize=(8, 4))
def Compavg():
data=Total()
markMax=[]
markAvg=[]
N = 5
ind = np.arange(N)
width = 0.35
fig = plt.figure()
ax = fig.add_subplot(111)
markMax.extend((data["Total"].max(),data["Total.1"].max(),data["Total.2"].max(),data["Total.3"].max(),data["Total.4"].max()))
markAvg.extend((data["Total"].mean(),data["Total.1"].mean(),data["Total.2"].mean(),data["Total.3"].mean(),data["Total.4"].mean()))
rects1 = ax.bar(ind, markMax, width, color='black')
rects2 = ax.bar(ind+width, markAvg, width, color='green')
ax.set_xlim(-width,len(ind)+width)
ax.set_ylim(0,120)
ax.set_ylabel('Marks')
ax.set_title('Max, Mean and Your Marks')
xTickMarks = ['Subject'+str(i) for i in range(1,6)]
ax.set_xticks(ind+width)
xtickNames = ax.set_xticklabels(xTickMarks)
plt.setp(xtickNames, rotation=10, fontsize=10)
ax.legend( (rects1[0], rects2[0]), ('Max', 'Mean') )
plt.show()
print "finished reading 1"
def compSub():
#max_data = np.r_[data["Total"]].max()
#bins = np.linspace(0, max_data, max_data + 1)
data=Total()
print data['Total']
plt.hist(data['Total'],linewidth=0, alpha=.7)
plt.hist(data['Total.1'],linewidth=0,alpha=.7)
plt.hist(data['Total.2'],linewidth=0,alpha=.7)
plt.hist(data['Total.3'],linewidth=0,alpha=.7)
plt.hist(data['Total.4'],linewidth=0,alpha=.7)
plt.title("Total marks Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()
print "finished reading 2"
def Total():
print "going to read"
data=pd.read_csv("output11cs.csv")
df3=data[['Total','Total.1','Total.2','Total.3','Total.4','Total.5','Total.6','Total.7']]
data["Main Total"]=df3.sum(axis=1)
data = data.dropna()
data.reset_index(drop=True)
return data
#compSub()
#Compavg()
當(dāng)我通過(guò)使用python rra.py執(zhí)行virtualenv之外的rra.py(甚至在virtualenv內(nèi))時(shí),它執(zhí)行完美并繪制asys.py中給出的圖形和直方圖.
然后我創(chuàng)建了一個(gè)’setup.py’文件來(lái)打包它,如下所示:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand
import vturra
import sys
class PyTest(TestCommand):
def finalize_options(self):
TestCommand.finalize_options(self)
self.test_args = []
self.test_suite = True
def run_tests(self):
import pytest
errcode = pytest.main(self.test_args)
sys.exit(errcode)
setup(name="vturra",
version=vturra.__version__,
license='Apache Software License',
tests_require=['pytest'],
install_requires=['matplotlib>=1.2.1',
'pandas',
'numpy',
'scipy',
'beautifulsoup',
'requests',
'patsy',
'seaborn==0.2.1',
'BeautifulSoup4'
],
cmdclass={'test': PyTest},
description="Downloads results from VTU website and analyzes the result",
long_description=open('README.md').read(),
author="Muhammed Thaha",
author_email='mthaha1989@gmail.com',
download_url='https://github.com/stormvirux/vturra',
packages=find_packages(exclude='tests'),
package_data={'vturra': ['data/*.xml']},
include_package_data=True,
platforms='any',
test_suite='vturra.test.test_vturra',
classifiers = [
'Programming Language :: Python',
'Development Status :: 1 - Beta',
'Natural Language :: English',
'Environment :: Web Environment',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
'Operating System :: OS Independent',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
extras_require={
'testing': ['pytest'],
},
entry_points={
"console_scripts": [
"vturra=vturra.rra:main"
#"pip%s=pip:main" % sys.version[:1],
#"pip%s=pip:main" % sys.version[:3],
],
}
)
我在virtualenv中使用python setup.py install安裝了軟件包,安裝完成后一切正常.現(xiàn)在,當(dāng)我執(zhí)行包vturra時(shí),我收到以下錯(cuò)誤:
Traceback (most recent call last):
File "asys.py", line 65, in
compSub()
File "asys.py", line 46, in compSub
plt.hist(data['Total'],linewidth=0, alpha=.7)
File "/home/storm/Documents/lol/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 2827, in hist
stacked=stacked, **kwargs)
File "/home/storm/Documents/lol/local/lib/python2.7/site-packages/matplotlib/axes.py", line 8249, in hist
if isinstance(x, np.ndarray) or not iterable(x[0]):
File "/home/storm/Documents/lol/local/lib/python2.7/site-packages/pandas/core/series.py", line 491, in __getitem__
result = self.index.get_value(self, key)
File "/home/storm/Documents/lol/local/lib/python2.7/site-packages/pandas/core/index.py", line 1032, in get_value
return self._engine.get_value(s, k)
File "index.pyx", line 97, in pandas.index.IndexEngine.get_value (pandas/index.c:2661)
File "index.pyx", line 105, in pandas.index.IndexEngine.get_value (pandas/index.c:2476)
File "index.pyx", line 149, in pandas.index.IndexEngine.get_loc (pandas/index.c:3215)
File "hashtable.pyx", line 382, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6450)
File "hashtable.pyx", line 388, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6394)
KeyError: 0L
但是,如果我在main()中注釋掉函數(shù)調(diào)用asys.compSub(),它的工作沒(méi)有任何錯(cuò)誤.
UPDATE
該函數(shù)作為virtualenv之外的獨(dú)立腳本執(zhí)行時(shí)效果很好,但在virtualenv中你會(huì)得到上述錯(cuò)誤.
我相信這是virtualenv的一個(gè)問(wèn)題呢?
最佳答案 終于解決了.這是最新版本的thepandas和matplotlib之間的問(wèn)題.
與擁有0.13.0的virtualenv相比,Global System pandas版本為0.10.所以我在virtualenv降級(jí)到0.10.0.
現(xiàn)在它的工作完美.
基本上它與matplotlib和pandas的API不兼容> = 0.13. plt.hist與系列目前將面臨這個(gè)問(wèn)題.
所以要么使用數(shù)據(jù)[‘Total.1’].hist()
或者傳入值plt.hist(data [‘Total.1’].values,….)
或?qū)andas降級(jí)到小于0.13的版本.
總結(jié)
以上是生活随笔為你收集整理的python编写代码时零_python – KeyError:运行打包代码时为0L的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 国科锐承宣布完成B轮融资
- 下一篇: 映宇宙:预计上半年净利润1.8亿至2亿元