我有一个电话价格数据的数据集,在列表中,我想用Pandas和绘图方法绘制每个模型的历史记录。
当我试着用一个函数来做这件事的时候,历史记录图就会被画在另一个上面。所以第一个情节是正确的,然后下一个有两个历史记录,然后下一个有所有的三个模型图在一起,等等。
import pandas as pd
import matplotlib.pyplot as plt
def printPlot(plotlist, model):
d = pd.DataFrame(plotlist)
d.columns = ['Model','GB','Condition','Price']
lowestquantile = d["Price"].quantile(0.2)
d = d[d["Price"] > lowestquantile]
d.Price.plot(kind='hist')
plotfile = model+".png"
plt.savefig("./plots/"+plotfile)
return
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* testplot = [[['iPhone 11', ' 64 GB', 'N/A', 5500], ['iPhone 11', ' 256 GB', 'Perfekt', 6500], ['iPhone 11', ' 64 GB', 'Perfekt', 5100], ['iPhone 11', ' 128 GB', 'Perfekt', 6200], ['iPhone 11', ' 64 GB', 'Perfekt', 5700], ['iPhone 11', ' 128 GB', 'Perfekt', 5750], ['iPhone 11', ' 128 GB', 'God', 1111], ['iPhone 11', ' 256 GB', 'Perfekt', 5700], ['iPhone 11', ' 64 GB', 'Perfekt', 5800], ['iPhone 11', ' 64 GB', 'Perfekt', 5200], ['iPhone 11', ' 8 GB', 'N/A', 10], ['iPhone 11', ' 256 GB', 'Perfekt', 4500], ['iPhone 11', ' 256 GB', 'Perfekt', 7000], ['iPhone 11', ' 64 GB', 'Perfekt', 5299], ['iPhone 11', ' 64 GB', 'Perfekt', 6000], ['iPhone 11', ' 256 GB', 'N/A', 50], ['iPhone 11', ' 64 GB', 'Perfekt', 250], ['iPhone 11', ' 128 GB', 'Perfekt', 200], ['iPhone 11', ' 128 GB', 'Perfekt', 6200], ['iPhone 11', ' 128 GB', 'N/A', 6350], ['iPhone 11', ' 64 GB', 'Perfekt', 69], ['iPhone 11', ' 512 GB', 'Perfekt', 100]],[['iPhone XS Max', ' 256 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6750], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5399], ['iPhone XS Max', ' 64 GB', 'God', 3300], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4800], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6666], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6500], ['iPhone XS Max', ' 64 GB', 'N/A', 5500], ['iPhone XS Max', ' 256 GB', 'God', 4700], ['iPhone XS Max', ' 64 GB', 'God', 5500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6450], ['iPhone XS Max', ' 512 GB', 'N/A', 9000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5700], ['iPhone XS Max', ' 512 GB', 'Perfekt', 5345], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6999], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 512 GB', 'N/A', 5499], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6500], ['iPhone XS Max', ' 64 GB', 'Rimelig', 3000], ['iPhone XS Max', ' 256 GB', 'N/A', 4700], ['iPhone XS Max', ' 256 GB', 'N/A', 7500], ['iPhone XS Max', ' 256 GB', 'God', 5500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 4000], ['iPhone XS Max', ' 64 GB', 'N/A', 4499], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 64 GB', 'N/A', 4000], ['iPhone XS Max', ' 512 GB', 'Perfekt', 7000], ['iPhone XS Max', ' 64 GB', 'God', 200], ['iPhone XS Max', ' 256 GB', 'God', 5000], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4400], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6500], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 64 GB', 'N/A', 5000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 512 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 256 GB', 'God', 4500], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 512 GB', 'God', 6500], ['iPhone XS Max', ' 512 GB', 'N/A', 6500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6500], ['iPhone XS Max', ' 64 GB', 'God', 3799], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5399], ['iPhone XS Max', ' 64 GB', 'N/A', 4599], ['iPhone XS Max', ' 64 GB', 'God', 6000], ['iPhone XS Max', ' 8 GB', 'Perfekt', 130], ['iPhone XS Max', ' 8 GB', 'Perfekt', 130], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6499], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4599], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 8 GB', 'Perfekt', 850], ['iPhone XS Max', ' 256 GB', 'God', 5000], ['iPhone XS Max', ' 256 GB', 'God', 6000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6499], ['iPhone XS Max', ' 512 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 64 GB', 'God', 5000], ['iPhone XS Max', ' 64 GB', 'God', 4700], ['iPhone XS Max', ' 64 GB', 'God', 4900], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6200], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 4499], ['iPhone XS Max', ' 64 GB', 'God', 4500], ['iPhone XS Max', ' 64 GB', 'Perfekt', 250], ['iPhone XS Max', ' 256 GB', 'Perfekt', 7000], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5900], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 150], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6750], ['iPhone XS Max', ' 64 GB', 'God', 4000], ['iPhone XS Max', ' 256 GB', 'God', 6000], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 512 GB', 'N/A', 7000], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4999], ['iPhone XS Max', ' 256 GB', 'God', 100], ['iPhone XS Max', ' 256 GB', 'God', 5000], ['iPhone XS Max', ' 256 GB', 'God', 5000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6199], ['iPhone XS Max', ' 512 GB', 'Perfekt', 7500], ['iPhone XS Max', ' 64 GB', 'N/A', 6000], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4400], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4500], ['iPhone XS Max', ' 512 GB', 'God', 6500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5400], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 64 GB', 'God', 4000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5800], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4800], ['iPhone XS Max', ' 512 GB', 'N/A', 250], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 4700], ['iPhone XS Max', ' 512 GB', 'Perfekt', 5800], ['iPhone XS Max', ' 512 GB', 'Perfekt', 7999], ['iPhone XS Max', ' 64 GB', 'N/A', 5300], ['iPhone XS Max', ' 256 GB', 'Rimelig', 5500], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4995], ['iPhone XS Max', ' 256 GB', 'God', 4800], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4200], ['iPhone XS Max', ' 512 GB', 'Perfekt', 7000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6499], ['iPhone XS Max', ' 256 GB', 'Perfekt', 4999], ['iPhone XS Max', ' 64 GB', 'N/A', 4599], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5999], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6999], ['iPhone XS Max', ' 256 GB', 'God', 4200], ['iPhone XS Max', ' 64 GB', 'God', 4300], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6499], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6900], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 64 GB', 'Rimelig', 4500], ['iPhone XS Max', ' 64 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6000], ['iPhone XS Max', ' 256 GB', 'God', 280], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6900], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5800], ['iPhone XS Max', ' 8 GB', 'Perfekt', 150], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6999], ['iPhone XS Max', ' 64 GB', 'Perfekt', 4800], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6999], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6250], ['iPhone XS Max', ' 256 GB', 'Perfekt', 7000], ['iPhone XS Max', ' 256 GB', 'God', 4999], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6999], ['iPhone XS Max', ' 256 GB', 'Perfekt', 6999], ['iPhone XS Max', ' 512 GB', 'Perfekt', 50], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5700], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5000], ['iPhone XS Max', ' 512 GB', 'Perfekt', 7000], ['iPhone XS Max', ' 64 GB', 'Perfekt', 6200], ['iPhone XS Max', ' 256 GB', 'Perfekt', 7000], ['iPhone XS Max', ' 512 GB', 'Perfekt', 7500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 7000], ['iPhone XS Max', ' 128 GB', 'Perfekt', 110], ['iPhone XS Max', ' 256 GB', 'Perfekt', 7100], ['iPhone XS Max', ' 256 GB', 'Perfekt', 99], ['iPhone XS Max', ' 256 GB', 'Perfekt', 7400], ['iPhone XS Max', ' 128 GB', 'Perfekt', 99], ['iPhone XS Max', ' 256 GB', 'Perfekt', 7300], ['iPhone XS Max', ' 512 GB', 'Perfekt', 6750], ['iPhone XS Max', ' 64 GB', 'God', 4500], ['iPhone XS Max', ' 256 GB', 'Perfekt', 5000]]]
*/
for plotlist in testplot:
printPlot(plotlist,plotlist[0][0])发布于 2020-03-18 11:27:48
为了避免这种行为,只需在plt.clf()函数中的return之前再添加一行。代码将如下所示:
def printPlot(plotlist, model):
d = pd.DataFrame(plotlist)
d.columns = ['Model','GB','Condition','Price']
lowestquantile = d["Price"].quantile(0.2)
d = d[d["Price"] > lowestquantile]
d.Price.plot(kind='hist')
plotfile = model+".png"
plt.savefig("./plots/" + plotfile)
plt.clf() # <-- this row was missing (!)
returnhttps://stackoverflow.com/questions/60738188
复制相似问题