我是初学python,请别见笑,如有好的意见,还望提出。嫌字多的,直接看末尾的结论。
在学习python过程中,看到一个b站的教程,名字是Python获取小说数据并分析(为了避免广告嫌疑不打链接了),本来一个爬虫的小例子,折腾了一天时间。在这里分享出来,看能不能帮助到有需要的人。
程序大概是这样:
1、用requests获取一个小说网页的数据,大概就是类别,书名,字数等信息,用etree提出来。
2、把etree提出的信息放进字典,作pandas的dataframe(下面简称df)。
3、然后展示df,df.describe(),df.groupby('类别').count(),这几个都没事,然后df.类别.hist(),我去,死活不出来,这次说的大坑就是这个问题。
我也不确定我是不是真的解决了,因为我确实也没完全弄懂,都是乱试,把过程分享一下(人家教程是为了卖课的,所以直方图就给展示了一下,具体没教)。
坑一:#%%分段执行
教程用的vscode,讲课老师在代码里用#%%就可以把代码分段,然后一段段执行(在控制台)。到了hist那里,人家就直接出图了。
我是用的pycharm,加了#%%代码没反应,然后百度,n多搜索后发现一个有点靠谱的,说在视图开科学视图,我在pycharm里找了半天没有,又搜索了n久后,才看到一个真正靠谱的,人家说专业版才有科学视图,社区版的要装模块 cell mode。然后赶紧安装,装好后果真可以,用##来分段。起码算是可以分段用了。
坑二、不出图不报错
教程里运行df.类别.hist()时,控制台出来直方图。我搞一直不出图,只显示Out[10]: <Axes: >,也不报错。
(我现在有点怀疑,当初是不是弹出的figure,我一直没看到,因为它并不是弹出,而是最小化在任务栏,我是今天搞好后才发现,所以不能确定是不是昨天本来就可以正常出图。昨天搞到半夜3、4点,估计都麻木了。)
坑三、不出图,搞出错来了
一通百度后,改的啥都快记不清了,有改过\.virtualenvs\pyqt5-W-iCKkHt\Lib\site-packages\matplotlib\mpl-data\里面的matplotlibrc,好像涉及到backend: Agg,#interactive: True什么的,好像之前是False,因为当时控制台有个错误大概意思是打开交互模式,还有什么Qtagg,这些我都不懂,一通修改尝试后,有出别的错,然后就是各种百度,也更新了matplotlib这个库,还有用这个库设置各种不太懂的命令,反正最后还是不出图。放弃,决定第2天用vscode试试。
坑四、vscode中
装好vscode,复制过去代码,#%%并不能用,有了pycharm里的教训,知道要装模块了,一通百度,在vscode中装了jupyter扩展(这到底是vscode的一个扩展,还是pyhton的一个模块) ,然后代码可以#%%分段了,然后运行,说缺少ipykernel库,我又在cmd中装了,装完这俩,是可以分段执行了,但hist时,提示错误matplotlib is required for plotting when the default backend "matplotlib" is selected,那就在cmd继续安装matplotlib 。总之一顿装,好像还装过一个叫ipython的,反正弄完之后,vscode终于出图了。
坑五、重回pycharm
那如果我在pycharm终端把那一堆库都装一遍会不会也可以呢,于是乎一通安装。运行到hist时,令人惊喜的发现状态栏有个python的图标,点开后居然是个单窗口的直方图,Figure,原来这样。我不确定昨天是不是有,因为昨天搞得太麻了。但有个问题是Figure窗口总是无响应卡死,关了之后,整个控制台也跟着退出。又是一顿百度搜索,终于发现了办法:
plt.use("Qt5Agg")