2016-10-19 147 views
1

我正嘗試在Pycharms上使用Python創建一個heatmap。我有這樣的代碼:'DataFrame'對象不可調用

import numpy as np 
import pandas as pd 
import matplotlib 
matplotlib.use('agg') 
import matplotlib.pyplot as plt 

data1 = pd.read_csv(FILE") 

freqMap = {} 
for line in data1: 
    for item in line: 
    if not item in freqMap: 
     freqMap[item] = {} 

    for other_item in line: 
     if not other_item in freqMap: 
     freqMap[other_item] = {} 

     freqMap[item][other_item] = freqMap[item].get(other_item, 0) + 1 
     freqMap[other_item][item] = freqMap[other_item].get(item, 0) + 1 

df = data1[freqMap].T.fillna(0) 
print(df) 

我的數據存儲在一個CSV文件中。每一行代表的是由消費者Transaction.The通常籃市場分析相關產品的序列:

99 32 35 45 56 58 7 72 
99 45 51 56 58 62 72 17 
55 56 58 62 21 99 35 
21 99 44 56 58 7 72 
72 17 99 35 45 56 7 
56 62 72 21 91 99 35 
99 35 55 56 58 62 72 
99 35 51 55 58 7 21 
99 56 58 62 72 21  
55 56 58 21 99 35  
99 35 62 7 17 21  
62 72 21 99 35 58  
56 62 72 99 32 35  
72 17 99 55 56 58  

當我執行的代碼,我發現了以下錯誤:

Traceback (most recent call last): 
    File "C:/Users/tst/PycharmProjects/untitled1/tes.py", line 22, in <module> 
    df = data1[freqMap].T.fillna(0) 
    File "C:\Users\tst\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\frame.py", line 1997, in __getitem__ 
    return self._getitem_column(key) 
    File "C:\Users\tst\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2004, in _getitem_column 
    return self._get_item_cache(key) 
    File "C:\Users\tst\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1348, in _get_item_cache 
    res = cache.get(item) 
TypeError: unhashable type: 'dict' 

如何我可以解決這個問題嗎?

非常感謝!

+1

@ZachS。非常感謝您的迴應。我試着用你的說法,但我仍然有同樣的錯誤:( –

+0

你試過了:df = data1 [freqMap] .T.fillna(0) –

+0

你試圖得到什麼輸出? –

回答

2

您正在閱讀csv文件,但它沒有標題,分隔符不是逗號,而是可變數量的列。所以這是你第一行的三個錯誤。

而data1是一個DataFrame,freqMap是一個完全不相關的字典。所以做data1 [freqMap]是沒有意義的。

我建議你在jupyter或python解釋器中逐行逐行瀏覽。然後你就可以看到每一行的實際功能和實驗。