ImportError: dateutil.parser adında modül yok

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

Python programında

pandaları içe aktarırken aşağıdaki hatayı alıyorum

monas-mbp:book mona$ sudo pip install python-dateutil Gereksinim zaten karşılandı (yükseltmek için --upgrade kullanın): /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python'da python-dateutil Temizleniyor... monas-mbp:book mona $ python t1.py dateutil.parser Traceback adında bir modül yok (en son çağrı son): Dosya "t1.py", satır 4, <module> pandaları pd olarak içe aktar Dosya "/Library/Python/2.7/site-packages/pandas/__init__.py", satır 6, <module> itibaren . import hashtable, tslib, lib Dosya "tslib.pyx", satır 31, init pandas.tslib'de (pandas/tslib.c:48782) ImportError: dateutil.parser adında bir modül yok 

Ayrıca işte program:

matematikten kodekleri içe aktar import sqrt import numpy as np olarak al pandaları pd kullanıcıları olarak al = {"Angelica": {"Blues Traveler": 3.5, "Broken Bells": 2.0, "Norah Jones": 4.5, "Phoenix": 5.0, "Biraz Durgun": 1.5, "The Strokes": 2.5, "Vampire Weekend": 2.0}, "Bill":{"Blues Traveler": 2.0, " Kırık Çanlar": 3.5, "Deadmau5": 4.0, "Phoenix": 2.0, "Biraz Durmuş": 3.5, "Vampir Hafta Sonu": 3.0}, "Chan": {"Blues Traveler": 5.0, "Broken Bells": 1.0, "Deadmau5": 1.0, "Norah Jones": 3.0, "Phoenix": 5, "Biraz Durmuş": 1.0}, "Dan": {"Blues Traveler": 3.0, "Broken Bells": 4.0, "Deadmau5 ": 4.5, "Phoenix": 3.0, "Biraz Durgun": 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": {"Bozuk n Bells": 4.5, "Deadmau5": 4.0, "Norah Jones": 5.0, "Phoenix": 5.0, "Biraz Durmuş": 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} } sınıf tavsiyecisi: def __init__(self, data, k=1, metric= "pearson", n=5): """ önericiyi şu anda başlatır, eğer veri sözlük ise önerici buna başlatılır. Diğer tüm veri türleri için, başlatma gerçekleşmez k, k en yakın komşu için k değeridir metriği, hangi uzaklık formülünün kullanılacağıdır n, """ yapılacak maksimum öneri sayısıdır self.k = k self.n = n self .username2id = {} self.userid2name = {} self.productid2name = {} # nedense self.metric = metric if self.metric == "pearson": self.fn = self metriğin adını kaydetmek istiyorum .pearson # # eğer veri sözlük ise, önerici verisini ona ayarlayın # if type(data).__name__ == "dict": self.data = data def convertProductID2name(self, id): """Verilen ürün kimliği numarası ürün adını döndür """ self.productid2name'de id ise: self.productid2name[id] döndür başka: dönüş id def userRatings(self, id, n): """Kimliği olan kullanıcı için en iyi n puanını döndür""" print ("Derecelendirmeler " + self.userid2name[id]) derecelendirmeleri = self.data[id] print(len(ratings)) derecelendirmeleri = list(ratings.items()) derecelendirmeleri = [(self.convertProductID2name(k), v) for (k) , v) derecelendirmelerde] # nihayet derecelendirmeleri sırala ve döndür.sort(anahtar=lambda ar tistTuple: artistTuple[1], reverse = True) derecelendirmeler = derecelendirmeler[:n] derecelendirmelerde derecelendirme için: print("%s %i" % (rating[0], derecelendirme[1])) def loadBookDB(self, path =""): """BX kitap veri kümesini yükler. Yol, BX dosyalarının bulunduğu yerdir""" self.data = {} i = 0 # # İlk önce kitap derecelendirmelerini self.data'ya yükleyin # f = codecs.open(path + "BX-Book-Ratings.csv", " f'deki satır için r", "utf8"): i += 1 #alanlara ayrı satır alanlar = line.split(";") kullanıcı = alanlar[0].strip(""") kitap = alanlar[1] .strip(""") derecelendirme = int(fields[2].strip().strip(""")) self.data'daki kullanıcı ise: currentRatings = self.data[kullanıcı] başka: currentRatings = {} currentRatings[ kitap] = derecelendirme self.data[kullanıcı] = currentRatings f.close() # # Şimdi kitapları self.productid2name içine yükleyin # Kitaplar, diğer alanların yanı sıra isbn, başlık ve yazar içerir # f = codecs.open(path + "BX- f'deki satır için Books.csv", "r", "utf8"): i += 1 #alanlara ayrı satır alanlar = line.split(";") isbn = alanlar[0].strip(""") başlık = alanlar[1].strip(""") yazar = alanlar[2].strip().strip(""") başlık = başlık + " yazan " + yazar self.productid2name[isbn] = başlık f.close () # # Şimdi hem self.userid2name hem de # self.username2id içine kullanıcı bilgilerini yükleyin # f = codecs.open(path + "BX-U f'deki satır için sers.csv", "r", "utf8"): i += 1 #print(line) #alanlara ayrı satır alanları alanlar = line.split(";") kullanıcı kimliği = alanlar[0].strip (""") konum = alanlar[1].strip(""") if len(fields) > 3: yaş = alanlar[2].strip().strip(""") başka: yaş = "NULL" ise yaş != "NULL": değer = konum + " (yaş: " + yaş + ")" başka : değer = konum self.userid2name[userid] = değer self.username2id[konum] = kullanıcı kimliği f.close() print(i) def pearson(self, derecelendirme1, derecelendirme2): sum_xy = 0 toplam_x = 0 toplam_y = 0 toplam_x2 = 0 sum_y2 = 0 n = 0 derecelendirme1 anahtarı için: eğer derecelendirme2 anahtarı: n += 1 x = derecelendirme1[anahtar] y = derecelendirme2[anahtar] sum_xy += x * y toplam_x += x toplam_y += y toplam_x2 += pow(x, 2) sum_y2 += pow(y, 2) eğer n == 0: 0 döndür # şimdi payda paydasını hesapla = (sqrt(sum_x2 - pow(sum_x, 2) / n) * sqrt(sum_y2 - pow( toplam_y, 2) / n)) if payda == 0: dönüş 0 başka: dönüş (sum_xy - (sum_x * toplam_y) / n) / payda def hesaplamaNearestNeighbor(self, kullanıcı adı): """kullanıcılara dayalı olarak sıralanmış bir kullanıcı listesi oluşturur """ kullanıcı adına olan uzaklıklarına göre mesafeler = [] örneğin self.data'da: if örnek != kullanıcı adı: mesafe = self.fn(self.data[kullanıcı adı], self.data[örnek]) Distances.append(( örnek, mesafe)) # d'ye göre sıralama istance -- en yakın ilk mesafeler.sort(key=lambda artistTuple: artistTuple[1], reverse=True) dönüş mesafeleri def tavsiye(self, user): """Öneri listesi ver""""öneri = {} # first get yakınlığa göre sıralanmış kullanıcıların listesi en yakın = self.computeNearestNeighbor(user) # # şimdi kullanıcı için derecelendirmeleri al # userRatings = self.data[user] # # i in range(self.k) için toplam mesafeyi belirle toplamMesafe = 0.0 : totalDistance += en yakın[i][1] # şimdi en yakın k komşuyu yineleyin # aralıktaki i için derecelendirmelerini toplayın(self.k): # pasta diliminin ağırlığını hesaplayın = en yakın[i][1] / totalDistance # kişinin adını al adı = en yakın[i][0] # bu kişi için derecelendirmeleri al komşuRatings = self.data[ad] # kişinin adını al # şimdi komşu, kullanıcının sanatçı için yapmadığı puanları bul komşuRatings'de: userRatings'de sanatçı yoksa: önerilerde sanatçı yoksa: öneriler[sanatçı] = (neighborRatings[sanatçı] * ağırlık) başka: öneriler[arti st] = (öneriler[sanatçı] + komşuDeğerlendirmeler[sanatçı] * ağırlık) # şimdi sözlükten liste yap öneriler = list(recommendations.items()) öneriler = [(self.convertProductID2name(k), v) for (k, v) ) önerilerde] # son olarak önerileri sırala ve döndür.sort(key=lambda artistTuple: artistTuple[1], reverse = True) # İlk n öğeyi döndür öneriler döndür[:self.n] r = önerici(kullanıcılar) # Yazar uygulama r.loadBookDB("/Users/mona/Downloads/BX-Dump/") derecelendirme = pd.read_csv("/Users/danialt/BX-CSV-Dump/BX-Book-Ratings.csv", sep="; ",quotchar=""", escapechar="") kitaplar = pd.read_csv("/Users/danialt/BX-CSV-Dump/BX-Books.csv", sep=";",quotchar=""" , escapechar="") users = pd.read_csv("/Users/danialt/BX-CSV-Dump/BX-Users.csv", sep=";",quotchar=""", escapechar="") pivot_rating = Rating.pivot(index="Kullanıcı Kimliği", column="ISBN", values="Kitap Derecelendirmesi")