python中的hist函数相关的问题,请各位帮我看下

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

f=open(r"C:\Strategic Planning\shuju\sample_stk_day_n\sh600005.csv")
Iris = pd.read_csv(f)

plt.figure(figsize=(25,22))

for ii,name in zip(range(len(Iris.columns.values)),Iris.columns.values):
plt.subplot(10,3,ii+1)
plt.hist(Iris[:,ii],50,color="red",alpha = 0.5)
plt.title(ii)
plt.subplots_adjust(bottom = 0.99,top = 2.5)
plt.show()

运行后报错:
TypeError Traceback (most recent call last)
in ()
6 #plt.hist(bcanerX[bcanerY[:] == 0,ii],50,color="green",alpha = 0.5)
7 #plt.hist(bcanerX[bcanerY[:] == 1,ii],50,color="red",alpha = 0.5)
----> 8 plt.hist(Iris[:,ii],50,color="red",alpha = 0.5)
9 plt.title(ii)
10

D:\Anaconda3\lib\site-packages\pandas\core\frame.py in getitem(self, key)
2686 return self._getitem_multilevel(key)
2687 else:
-> 2688 return self._getitem_column(key)
2689
2690 def _getitem_column(self, key):

D:\Anaconda3\lib\site-packages\pandas\core\frame.py in _getitem_column(self, key)
2693 # get column
2694 if self.columns.is_unique:
-> 2695 return self._get_item_cache(key)
2696
2697 # duplicate columns & possible reduce dimensionality

D:\Anaconda3\lib\site-packages\pandas\core\generic.py in _get_item_cache(self, item)
2485 """Return the cached item, item represents a label indexer."""
2486 cache = self._item_cache
-> 2487 res = cache.get(item)
2488 if res is None:
2489 values = self._data.get(item)

TypeError: unhashable type: 'slice'

补充:我的Iris数据,总共只有29列

画图引用数据的时候你改用列的序号来选取数据,应该使用:plt.hist(Iris.iloc[:,ii],50,color="red",alpha = 0.5)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

f=open(r"C:\Users\Administrator\jupyter\iris.csv")
Iris = pd.read_csv(f)

for ii,name in zip(range(len(Iris.columns.values)),Iris.columns.values):
plt.figure(figsize=(25,22))
plt.subplot(5,1,ii+1)#根据你的代码只需要画5幅图(即每列一幅)
plt.hist(Iris.iloc[:,ii],40,color="red",alpha = 0.5)
plt.title(ii)
plt.subplots_adjust(bottom = 0.99,top = 2.5)
plt.show()

或者不用.iloc

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
f=open(r"C:\Users\Administrator\jupyter\iris.csv")
Iris = pd.read_csv(f).values#区别主要在这里 直接将其变成矩阵形式了

for ii in range(len(Iris[0])):
plt.figure(figsize=(25,22))
plt.subplot(5,1,ii+1)
plt.hist(Iris[:,ii],40,color="red",alpha = 0.5)
plt.title(ii)
plt.subplots_adjust(bottom = 0.99,top = 2.5)
plt.show()

loc函数 为按标签取数据,第一个参数选择index,第二个参数选择column
iloc函数为按位置选择数据,即第n行,第n列数据,所以传入的是位置的整数型参数。
改一下就好
plt.hist(Iris.iloc[:,ii],50,color="red",alpha = 0.5)