在Python程序中导入pandas时,我收到以下错误
monas-mbp:book mona$sudo-pip-install-python-dateutil
已满足要求(使用--upgrade升级):python dateutil in/System/Library/Frameworks/python.framework/Versions/2.7/Extras/lib/python
清理。。。
MonasMBP:BookMona$pythont1.py
没有名为dateutil.parser的模块
回溯(最近一次呼叫最后一次):
文件“t1.py”,第4行,in<;模块>;
作为pd进口熊猫
文件“/Library/Python/2.7/site packages/pandas/_init__uuuu.py”,第6行,in<;模块>;
从…起导入哈希表、tslib、lib
文件“tslib.pyx”,第31行,在init pandas.tslib(pandas/tslib.c:48782)中
ImportError:没有名为dateutil.parser的模块
以下是节目:
导入编解码器
从数学导入sqrt
将numpy作为np导入
作为pd进口熊猫
用户={“安吉丽卡”:{“蓝调旅行者”:3.5,“断铃”:2.0,
“诺拉·琼斯”:4.5,“凤凰城”:5.0,
“有点驼背”:1.5,
“中风”:2.5,“吸血鬼周末”:2.0},
《比尔》:{“蓝调旅行者”:2.0,“断铃”:3.5,
“死神”5:4.0,“凤凰”2.0,
“稍微驼背”:3.5,“吸血鬼周末”:3.0},
“陈”:{“蓝调旅行家”:5.0,”断铃”:1.0,,
“死神5”:1.0,“诺拉·琼斯”:3.0,“凤凰城”:5,
“稍微驼背”:1.0},
“丹”:{“蓝调旅行者”:3.0,“断铃”:4.0,
“死亡5”:4.5,“凤凰城”:3.0,
“略微驼背”:4.5,“笔划”:4.0,
“吸血鬼周末”:2.0},
“Hailey”:{“断铃”:4.0,“死亡之魔”:1.0,
“诺拉·琼斯”:4.0,“笔划”:4.0,
“吸血鬼周末”:1.0},
“Jordyn”:{“断铃”:4.5,“死亡之魔”:4.0,
“诺拉·琼斯”:5.0,“凤凰城”:5.0,
“略微驼背”:4.5,“笔划”:4.0,
“吸血鬼周末”:4.0},
“山姆”:{“蓝调旅行者”:5.0,“断铃”:2.0,
“诺拉·琼斯”:3.0,“凤凰城”:5.0,
“略微驼背”:4.0,“笔划”:5.0},
《维罗妮卡》:{《蓝调旅行者》:3.0,“诺拉·琼斯”:5.0,
“凤凰”:4.0,“略显驼背”:2.5,
“笔划”:3.0}
}
课程推荐人:
定义初始化(self,data,k=1,metric=’pearson’,n=5):
“”“初始化推荐程序”
当前,如果数据是字典,则推荐程序将初始化
去吧。
对于所有其他数据类型的数据,不进行初始化
k是k最近邻的k值
公制是要使用的距离公式
n是要提出的建议的最大数量“”
self.k=k
self.n=n
self.username2id={}
self.userid2name={}
self.productid2name={}
#出于某种原因,我想保存度量的名称
self.metric=公制
如果self.metric==“pearson”:
self.fn=self.pearson
#
#如果数据是字典,则为其设置推荐数据
#
如果类型(数据)。\uuuu名称\uuuuu==’dict’:
self.data=数据
def convertProductID2name(自身,id):
“”“给定产品id号返回产品名称”“”
如果id位于self.productid2name中:
返回self.productid2name[id]
其他:
返回id
def用户等级(自我、id、n):
“”“返回id为的用户的n个最高评级”“”
打印(“对“+self.userid2name[id]”的评级)
评级=自我数据[id]
印刷品(透镜(评级))
评级=列表(ratings.items())
评级=[(self.convertProductID2name(k),v)
对于(k,v)评级]
#最后排序并返回
ratings.sort(key=lambda artistTuple:artistTuple[1],
反向=真)
评级=评级[:n]
对于评级中的评级:
打印(“%s\t%i”%(评级[0],评级[1]))
def loadBookDB(自身,路径=“”):
“”“加载BX书本数据集。路径是BX文件所在的位置。”
位于“”
self.data={}
i=0
#
#首先将书本评级加载到self.data中
#
f=编解码器.open(路径+“BX图书评级.csv”,“r”,“utf8”)
对于f中的行:
i+=1
#将行分隔为字段
字段=行。拆分(“;”)
用户=字段[0]。条带(“”)
book=字段[1]。条带(“”)
rating=int(字段[2].strip().strip(“”))
如果用户在self.data中:
电流额定值=自身数据[用户]
其他:
电流额定值={}
当前额定值[账面]=额定值
self.data[用户]=当前额定值
f、 关闭()
#
#现在将书籍加载到self.productid2name中
#书籍包含isbn、标题和作者等领域
#
f=编解码器.open(路径+“BX Books.csv”,“r”,“utf8”)
对于f中的行:
i+=1
#将行分隔为字段
字段=行。拆分(“;”)
isbn=字段[0]。条带(“”)
title=字段[1]。条带(“”)
author=字段[2]。strip().strip(“”)
标题=标题+作者
self.productid2name[isbn]=标题
f、 关闭()
#
#现在将用户信息加载到self.userid2name和
#self.username2id
#
f=编解码器.open(路径+“BX Users.csv”,“r”,“utf8”)
对于f中的行:
i+=1
#打印(行)
#将行分隔为字段
字段=行。拆分(“;”)
userid=字段[0]。条带(“”)
位置=字段[1]。条带(“”)
if len(字段)>;三:
年龄=字段[2].strip().strip(“”)
其他:
年龄=’NULL’
如果年龄!=“NULL”:
值=位置+’(年龄:’+age+’)’
其他:
值=位置
self.userid2name[userid]=值
self.username2id[location]=userid
f、 关闭()
印刷品(一)
def pearson(自我、评级1、评级2):
sum_xy=0
求和x=0
和y=0
sum_x2=0
求和y2=0
n=0
对于输入评级1:
如果输入额定值2:
n+=1
x=额定值1[键]
y=额定值2[键]
sum_xy+=x*y
和x+=x
和y+=y
sum_x2+=pow(x,2)
总和y2+=pow(y,2)
如果n==0:
返回0
#现在计算分母
分母=(sqrt(sum_x2-pow(sum_x,2)/n)
*sqrt(总和y2-功率(总和y,2)/n))
如果分母==0:
返回0
其他:
返回(sum_xy-(sum_x*sum_y)/n)/分母
def ComputeNeareTneighbor(自我,用户名):
“”“根据用户到的距离创建已排序的用户列表。”
用户名“”
距离=[]
例如,在self.data中:
如果实例!=用户名:
距离=self.fn(self.data[用户名],
self.data[实例])
距离。追加((实例,距离))
#基于距离排序–最接近的优先
距离.sort(key=lambda artistTuple:artistTuple[1],
反向=真)
返回距离
def推荐(自我、用户):
“”“提供建议列表”“”
建议={}
#首先获取按邻近度排序的用户列表
最近的=self.computeNearestNeighbor(用户)
#
#现在获取用户的评分
#
userRatings=self.data[user]
#
#确定总距离
总距离=0.0
对于范围内的i(self.k):
总距离+=最近的[i][1]
#现在遍历k个最近邻
#累积他们的收视率
对于范围内的i(self.k):
#计算饼片
重量=最近的[i][1]/总距离
#获取此人的姓名
name=最近的[i][0]
#获取此人的评分
neightrratings=self.data[name]
#获取此人的姓名
#现在找到用户没有找到的
对于邻居中的艺术家:
如果用户评级中没有艺术家:
如果艺术家不在推荐范围内:
推荐[艺术家]=(邻居[艺术家]
*重量)
其他:
推荐[艺术家]=(推荐[艺术家]
+邻居[艺术家]
*重量)
#现在从字典中列出清单
建议=列表(建议.items())
建议=[(self.convertProductID2name(k),v)
对于建议中的(k,v)]
#最后排序并返回
建议.sort(key=lambda artistTuple:artistTuple[1],
反向=真)
#返回前n个项目
返回建议[:self.n]
r=推荐人(用户)
#作者实现了
r、 loadBookDB(’/Users/mona/Downloads/BX Dump/’))
ratings=pd.read\u csv(’/Users/danialt/BX csv Dump/BX Book ratings.csv’,sep=“;”,quotechar=“\”,escapechar=“\\”)
books=pd.read\u csv(’/Users/danialt/BX csv Dump/BX books.csv’,sep=“;”,quotechar=“\”,escapechar=“\\”)
users=pd.read\u csv(’/users/danialt/BX csv Dump/BX users.csv’,sep=“;”,quotechar=“\”,escapechar=“\\”)
pivot\u rating=ratings.pivot(索引=’User-ID’,列=’ISBN’,值=’Book-rating’)
在Ubuntu上,您可能需要首先安装软件包管理器pip:
sudo-apt-get-install-python-pip
然后安装python-dateutil包,其中包含:</