ImportError: dateutil.parser라는 모듈이 없습니다.

| | | | | | | | | | | | | | | | | | | | | | | | | | | |

Python 프로그램에서 pandas를 가져올 때 다음 오류가 발생합니다.

monas-mbp:book mona$ sudo pip install python-dateutil 요구 사항이 이미 충족됨(업그레이드하려면 --upgrade 사용): /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python의 python-dateutil 정리... monas-mbp:book mona $ python t1.py dateutil.parser라는 모듈이 없음 Traceback(가장 최근 호출 마지막): 파일 "t1.py", 줄 4, <module> pandas를 pd 파일로 가져오기 "/Library/Python/2.7/site-packages/pandas/__init__.py", 줄 6, <module> 에서 . import hashtable, tslib, lib 파일 "tslib.pyx", 31행, init pandas.tslib(pandas/tslib.c:48782) ImportError: dateutil.parser라는 이름의 모듈이 없습니다. 

또한 프로그램은 다음과 같습니다.

수학에서 코덱 가져오기 import sqrt import numpy as np import pandas as pd users = {"Angelica": {"Blues Traveler": 3.5, "Broken Bells": 2.0, "Norah Jones": 4.5, "Phoenix": 5.0, "Slightly Stoopid": 1.5, "The Strokes": 2.5, "Vampire Weekend": 2.0}, "Bill":{"Blues Traveler": 2.0, " Broken Bells": 3.5, "Deadmau5": 4.0, "Phoenix": 2.0, "Slightly Stoopid": 3.5, "Vampire Weekend": 3.0}, "Chan": {"Blues Traveler": 5.0, "Broken Bells": 1.0, "Deadmau5": 1.0, "Norah Jones": 3.0, "Phoenix": 5, "Slightly Stoopid": 1.0}, "Dan": {"Blues Traveler": 3.0, "Broken Bells": 4.0, "Deadmau5 ": 4.5, "Phoenix": 3.0, "Slightly Stoopid": 4.5, "The Strokes": 4.0, "Vampire Weekend": 2.0}, "Hailey": {"Broken Bells": 4.0, "Deadmau5": 1.0, "Norah Jones": 4.0, "The Strokes": 4.0, "Vampire Weekend": 1.0}, "Jordyn": {"Broke n Bells": 4.5, "Deadmau5": 4.0, "Norah Jones": 5.0, "Phoenix": 5.0, "Slightly Stoopid": 4.5, "The Strokes": 4.0, "Vampire Weekend": 4.0}, "Sam" : {"Blues Traveler": 5.0, "Broken Bells": 2.0, "Norah Jones": 3.0, "Phoenix": 5.0, "Slightly Stoopid": 4.0, "The Strokes": 5.0}, "Veronica": {" Blues Traveler": 3.0, "Norah Jones": 5.0, "Phoenix": 4.0, "Slightly Stoopid": 2.5, "The Strokes": 3.0} } 클래스 추천자: def __init__(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 = metric if self.metric == "pearson": self.fn = self .pearson # # 데이터가 사전이면 추천 데이터를 설정합니다. # if type(data).__name__ == "dict": self.data = data def convertProductID2name(self, id): """주어진 제품 ID 번호 반환 제품 이름 """ if id in self.productid2name: return self.productid2name[id] else: return id def userRatings(self, id, n): """Return n top ratings for user with id""" print("Ratings for " + self.userid2name[id]) 등급 = self.data[id] print(len(ratings)) 등급 = list(ratings.items()) 등급 = [(self.convertProductID2name(k), v) for (k , v) in Ratings] # 마지막으로 등급을 정렬하고 반환합니다.sort(key=lambda ar tistTuple: ArtistTuple[1], reverse = True) Ratings = Ratings[:n] 등급의 등급: print("%s %i" % (rating[0], Rating[1])) def loadBookDB(self, path =""): """ BX 책 데이터세트를 로드합니다. 경로는 BX 파일이 있는 위치입니다.""" self.data = {} i = 0 # # 먼저 책 등급을 self.data에 로드합니다. # f = codecs.open(path + "BX-Book-Ratings.csv", " r", "utf8") for line in f: i += 1 #줄을 필드로 분리 fields = line.split(";") user = fields[0].strip(""") book = fields[1] .strip(""") 등급 = int(fields[2].strip().strip(""")) if user in self.data: currentRatings = self.data[user] else: currentRatings = {} currentRatings[ book] = Rating self.data[user] = currentRatings f.close() # # 이제 책을 self.productid2name에 로드합니다. # 책에는 isbn, 제목, 저자가 다른 필드에 포함되어 있습니다. # f = codecs.open(path + "BX- Books.csv", "r", "utf8") 행 f: i += 1 #줄을 필드로 분리 필드 = line.split(";") isbn = fields[0].strip(""") 제목 = fields[1].strip(""") 작성자 = fields[2].strip().strip(""") 제목 = 제목 + " 작성자 + 작성자 self.productid2name[isbn] = 제목 f.close () # # 이제 사용자 정보를 self.userid2name 및 # self.username2id 모두에 로드합니다. # f = codecs.open(path + "BX-U sers.csv", "r", "utf8") f: i += 1 #print(line) #줄을 필드로 분리 fields = line.split(";") userid = fields[0].strip (""") 위치 = fields[1].strip(""") if len(fields) > 3: age = fields[2].strip().strip(""") else: age = "NULL" if age != "NULL": 값 = 위치 + " (나이: " + age + ")" else : value = 위치 self.userid2name[userid] = 값 self.username2id[location] = userid f.close() print(i) def pearson(self, Rating1, Rating2): sum_xy = 0 sum_x = 0 sum_y = 0 sum_x2 = 0 sum_y2 = 0 Rating1의 키에 대해 n = 0: Rating2의 키인 경우: n += 1 x = Rating1[key] y = Rating2[key] sum_xy += x * y sum_x += x sum_y += y sum_x2 += pow(x, 2) sum_y2 += pow(y, 2) if n == 0: return 0 # 이제 분모 분모를 계산합니다. = (sqrt(sum_x2 - pow(sum_x, 2) / n) * sqrt(sum_y2 - pow( sum_y, 2) / n)) if denominator == 0: return 0 else: return (sum_xy - (sum_x * sum_y) / n) / denominator def computeNearestNeighbor(self, username): """를 기반으로 정렬된 사용자 목록 생성 사용자 이름까지의 거리""" distances = [] 예를 들어 self.data에서: if instance != 사용자 이름: distance = self.fn(self.data[username], self.data[instance]) distances.append(( instance, distance)) # d를 기준으로 정렬 istance -- 가장 가까운 첫 번째 거리 Nearness로 정렬된 사용자 목록 = self.computeNearestNeighbor(user) # # 이제 사용자에 대한 등급을 얻습니다. # userRatings = self.data[user] # # 총 거리를 결정합니다. totalDistance = 0.0 in range(self.k) : totalDistance += Nearest[i][1] # 이제 k 개의 최근접 이웃을 반복합니다. # 범위 내에서 i에 대한 등급을 누적합니다(self.k): # 파이 조각 계산 가중치 = 가장 가까운[i][1] / totalDistance # 사람 이름 가져오기 name = Nearest[i][0] # 이 사람에 대한 등급 가져오기 NeighborRatings = self.data[name] # 사람 이름 가져오기 # 이제 사용자가 아티스트에 대해 "t"하지 않은 평가된 이웃 밴드 찾기 inneighborRatings: 아티스트가 아닌 경우 userRatings: 아티스트가 추천에 없는 경우:Recommendations[아티스트] = (neighborRatings[아티스트] * 가중치) else: 추천[arti st] = (recommendations[아티스트] + NeighborRatings[아티스트] * weight) # 이제 사전에서 목록을 만듭니다. 권장 사항 = list(recommendations.items()) 권장 사항 = [(self.convertProductID2name(k), v) for (k, v ) inRecommendations] # 마지막으로 정렬 및 반환 권장 사항.sort(key=lambda ArtistTuple: ArtistTuple[1], reverse = True) # 처음 n개 항목 반환 권장 사항[:self.n] r = 추천자(users) # 작성자 구현 r.loadBookDB("/Users/mona/Downloads/BX-Dump/") 등급 = pd.read_csv("/Users/danialt/BX-CSV-Dump/BX-Book-Ratings.csv", sep="; ", quotechar=""", escapechar="") 책 = pd.read_csv("/Users/danialt/BX-CSV-Dump/BX-Books.csv", sep=";", quotechar=""" , escapechar="") 사용자 = pd.read_csv("/Users/danialt/BX-CSV-Dump/BX-Users.csv", sep=";", quotechar=""", escapechar="") 피벗_등급 = Ratings.pivot(index="사용자 ID", columns="ISBN", values="도서 등급")