0
我不确定为什么出现此错误。基本上,我正在组织数据,然后在不同的变量集上制作相关图。
数据正按“estado”列值过滤。我的功能与所有不同的值正确工作,但与“公关/ Horra”。这是当我得到“没有这样的文件或目录:'PR/Horra1.pdf'”错误。我不确定这是为什么,因为所有其他值使用相同的函数正确工作。Errno 2按特定值过滤数据时
数据:
Animal peso estado ult. peso edad incre
actual fecha anterior (meses) peso
kg peso
SAN-13-09 510 PR/Horra 1/31/2017 500 47 10
SAN-13-51 507 Palp- 1/31/2017 500 42 7
SAN-14-10 366 PR 1/31/2017 359 34 7
SAN-14-21 462 Palp- 1/31/2017 451 33 11
SAN-14-26 310 Palp- 1/31/2017 307 32 3
SAN-14-27 300 Palp- 1/31/2017 293 30 7
SAN-14-33 380 Palp- 1/31/2017 374 29 6
SAN-14-37 377 Palp- 1/31/2017 372 29 5
SAN-15-14 365 Nc 1/31/2017 351 22 14
SAN-15-15 341 Nc 1/31/2017 333 22 8
SAN-15-58 297 Ser 1/31/2017 277 16 20
代码:
# make imports
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import xlrd
import pylab
from PyPDF2 import PdfFileMerger
# define a correlation
def pearsonr(x, y):
# Assume len(x) == len(y)
n = len(x)
sum_x = float(sum(x))
sum_y = float(sum(y))
sum_x_sq = sum(map(lambda x: pow(x, 2), x))
sum_y_sq = sum(map(lambda x: pow(x, 2), y))
psum = sum(map(lambda x, y: x * y, x, y))
num = psum - (float(sum_x) * float(sum_y/n))
den = pow((sum_x_sq - pow(sum_x, 2)/n) * (sum_y_sq - pow(sum_y, 2)/n), 0.5)
if den == 0: return 0
return num/den
# define a correlation graph
def plot(x, y, num):
matplotlib.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots()
corr = pearsonr(x,y)
name = x.name + ' vs ' + y.name + ' - Pearson: ' + str(round(corr ,3))
ax.set_title(name)
ax.set_xlabel(x.name)
ax.set_ylabel(y.name)
ax.plot(x,y, 'o')
pylab.savefig(num + '.pdf')
def groups(a, b, c):
x = a[[b , c]]
return x
def openData(a):
# open data and clean columns
data = pd.read_excel(a, header = 2)
data = data.set_index('Animal')
return data
def organizeData(data, filters):
#filter data
if filters != 'None':
data = data[data['Estado actual'] == filters]
# organize data
group1 = groups(data, 'Peso actual kg', 'peso anterior')
group2 = groups(data, 'Peso actual kg', 'Edad (Meses)')
group3 = groups(data, 'Peso actual kg', 'incre peso')
group4 = groups(data, 'peso anterior', 'Edad (Meses)')
group5 = groups(data, 'peso anterior', 'incre peso')
group6 = groups(data, 'Edad (Meses)', 'incre peso')
return group1, group2, group3, group4, group5, group6
def createG(b,a):
plotss = plot(b.iloc[:,0], b.iloc[:,1],a)
return plotss
def name_of_graph (filters,num):
name = filters + str(num)
return name
def all(filters, data_file):
a,b,c,d,e,f = organizeData(data_file, filters)
# create graphs and save pdfs
plot1 = createG(a, name_of_graph(filters,1))
plot2 = createG(b, name_of_graph(filters,2))
plot3 = createG(c, name_of_graph(filters,3))
plot4 = createG(d, name_of_graph(filters,4))
plot5 = createG(e, name_of_graph(filters,5))
plot6 = createG(f, name_of_graph(filters,6))
return plot1, plot2, plot3, plot4, plot5, plot6
data_file = openData('/Users/username/works/dtest/data/data.xls')
all("None", data_file)
all("PR/Horra", data_file)
all("Palp-", data_file)
all("PR", data_file)
all("Nc", data_file)
all("Ser", data_file)
错误:
[Errno 2] No such file or directory: 'PR/Horra1.pdf'
扩展错误:
FileNotFoundError Traceback (most recent call last)
<ipython-input-10-2f38564bb9d3> in <module>()
1 all("None", data_file)
----> 2 all("PR/Horra", data_file)
3 all("Palp-", data_file)
4 all("PR", data_file)
5 all("Nc", data_file)
<ipython-input-6-d0d4157a5102> in all(filters, data_file)
59 a,b,c,d,e,f = organizeData(data_file, filters)
60 # create graphs and save pdfs
---> 61 plot1 = createG(a, name_of_graph(filters,1))
62 plot2 = createG(b, name_of_graph(filters,2))
63 plot3 = createG(c, name_of_graph(filters,3))
<ipython-input-6-d0d4157a5102> in createG(b, a)
49
50 def createG(b,a):
---> 51 plotss = plot(b.iloc[:,0], b.iloc[:,1],a)
52 return plotss
53
<ipython-input-6-d0d4157a5102> in plot(x, y, num)
23 ax.set_ylabel(y.name)
24 ax.plot(x,y, 'o')
---> 25 pylab.savefig(num + '.pdf')
26
27 def groups(a, b, c):
/Users/user/envs/dtest/lib/python3.6/site-packages/matplotlib/pyplot.py in savefig(*args, **kwargs)
695 def savefig(*args, **kwargs):
696 fig = gcf()
--> 697 res = fig.savefig(*args, **kwargs)
698 fig.canvas.draw_idle() # need this if 'transparent=True' to reset colors
699 return res
/Users/user/envs/dtest/lib/python3.6/site-packages/matplotlib/figure.py in savefig(self, *args, **kwargs)
1571 self.set_frameon(frameon)
1572
-> 1573 self.canvas.print_figure(*args, **kwargs)
1574
1575 if frameon:
/Users/user/envs/dtest/lib/python3.6/site-packages/matplotlib/backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
2250 orientation=orientation,
2251 bbox_inches_restore=_bbox_inches_restore,
-> 2252 **kwargs)
2253 finally:
2254 if bbox_inches and restore_bbox:
/Users/user/envs/dtest/lib/python3.6/site-packages/matplotlib/backends/backend_pdf.py in print_pdf(self, filename, **kwargs)
2517 file = filename._file
2518 else:
-> 2519 file = PdfFile(filename)
2520 try:
2521 file.newPage(width, height)
/Users/user/envs/dtest/lib/python3.6/site-packages/matplotlib/backends/backend_pdf.py in __init__(self, filename)
420 self.tell_base = 0
421 if is_string_like(filename):
--> 422 fh = open(filename, 'wb')
423 elif is_writable_file_like(filename):
424 try:
FileNotFoundError: [Errno 2] No such file or directory: 'PR/Horra1.pdf'
在文件名中是否允许“/”?注意:不要使用'all'作为函数名,它会隐藏python内建的'all()'函数。 – AChampion