上一篇,我们用 Scrapy 从简单心理网站上抓取了心理咨询师的信息。
接下来试着分析一下咨询师的价格。
如何去掉某一列中不需要的字符?
在 price
列中,数据格式是 600 元/次
。很明显,中文字符会给统计价格带来不便,需要想办法去掉。
- 取
price
列:df['name']
- 去掉
元/次
字符:str.rstrip()
- 把剩下字符转换成数字:
pd.to_numeric
Pandas 语句可以这样写:
1 | df['price'].str.rstrip('元/次').apply(pd.to_numeric) |
结果:
如何统计价格?
用 Pandas 做基本的数据统计如均值、最大值、最小值等,非常方便,分别用 mean()
, max()
, min()
就可以:
1 | print("平均价格:{:.1f}元 \n最高价格:{}元 \n最低价格:{}元".format(df['price'].mean(),df['price'].max(),df['price'].min())) |
- 平均价格:570.9元
- 最高价格:3000元
- 最低价格:100元
另外,Pandas 还提供了 describe()
函数,快速给出概要统计值:
然后单独取出收费最高和最低的咨询师资料:
1 | df.loc[df['price'].idxmax()] |
如何统计咨询师介绍里的词频?
方法 1 :用 jieba 分词,用 Counter 统计
1 | import jieba |
列出前 30 个高频词:
方法 2 :用 wordcloud 直接制作标签云
word cloud 是一个 python 的标签云生成库,可以直接输入文本,得到标签云图片,还可以定制图片形状和颜色,小巧好用。(https://github.com/amueller/word_cloud)
结合 matplotlib,很快就可以画出高频词的标签云:
1 | %matplotlib inline |
结果如下:
完整的 Jupyter Notebook,请查看 00 的 Github。