需求:
某某金融大亨想涉足金融网贷,想给网贷平台取一个名字,那么取什么名字,名字里面包含哪些关键字,在行业内的曝光率会相比较高一些呢?
可以理解为:
你负责某某网贷平台的网络推广工作,如何进一步优化各广告推广平台上的搜索关键词,这些网贷平台的名称都有啥共同点?
其实就是:
想看看各网贷平台名称的高频词汇, 给各平台的名称划下重点
找数据:
获取所有网贷平台的平台基本名称数据,这样子才能进行下一步工作
把网贷之家上所有平台的数据找出来,这样就可以了
读取数据:
import pymysql
import pandas as pd
方法一:pandas 直接读取数据库数据
1. 用 pymysql 连接数据库
2. 用 pandas 通过数据库读取数据 (读取速度非常的快)
方法二:pandas 读取本地 xls 或者 csv 格式文件(因为并不是所有做数据的人都有权限访问数据库,有些是从系统导出数据,再进行操作,所以这也是为了照顾这批人)
读取数据后的基本操作
查看数据内容
plat 查看所有的数据, 我一般都是用 Jupyter QtConsole 编译器 进行数据操作,很灵活
plat.head() 默认是查看前 5 行 可加参数 比如 plat.head(n=10) 则是查看前十行
plat.tail() 默认是查看后 5 行 可加参数 比如 plat.tail(n=10) 则是查看后十行
查看某一列
plat.platName.head()
查看多列则是:plat[['platId','platPin','platName']].head()
查看各字段的数据类型
plat.dtypes
在 pandas 里面 有这么几种主要从数据类型:float,int,bool, datetime64[ns], timedelta[ns], category 和 object
一般情况下,从外部读取的数据,基本上以 object 为多,如果是数字格式,那么就会是 int64 或者 float64, 大多数情况下,读取的日期格式到 pandas 里面都是 object 格式,需要自己转换为 datetime64[ns] 才行。(格式问题后期会详谈)
详细参考: http://pandas.pydata.org/pandas-docs/stable/basics.html#dtypes 清洗整理数据及可视化:
我们只需要拿出 platName 这一列,然后对平台名称进行分词,看一下网贷平台的取名都会有哪些规律
导入 jieba 这个库 import jieba(没有安装这个库的 自行 pip install jieba)
这个算是 python 中最简单大众的中文分词库了,现在很多教程分词都是用这个库
这是我之前监控大学同学微信群,然后收集大家短时间内的一顿瞎聊的聊天记录,做出来的云词图效果。
可以看出大家都挺开心的,哈哈哈哈。
毕业即结婚确实是热门话题,减肥啊,工作啊,外卖啊,胖啊,吃饭啊是大家很关心的话题。
Jieba 详细文档: https://github.com/fxsjy/jieba
操作如下:
得到一个 wordDict 的词典,现在我们用 pandas 将这个词典的 key 和 value 转换成 DataFrame 格式的数据
查看结果
显得乱七八糟,我们按'value'字段进行降序,看的更直观一些
result.sort_values(by='value',ascending=False)
此时,分词结果非常的直观了
可以看到:5776 个平台名称中,"财富" 出现了 662 次,"金融" 有 560 次,"贷" 出现了 557 次……
这下子,做网贷推广工作的,关键词上应该也能有不少启发,其实是可以用在工作中的,提高平台的搜索曝光度。
财富,金融,贷,投资,理财,创投,金服,网,在线…………………………
总结:
1. 使用 pandas 读取数据
使用最多的两种方式,本地文件读取和数据库读取,如果没有其他什么特别要求,下面写的够用了
plat = pd.read_sql("sql 语句",con)
plat = pd.read_csv("文件名(带路径)",encoding='utf-8')
plat = pd.read_excel('文件名(带路径)',sheetname='表名称')
如果遇到什么问题,也可以和我一起交流
详细参考 pandas 官方文档 :http://pandas.pydata.org/pandas-docs/stable/index.html
2. 使用 pandas 查看数据
plat 直接输入 pandas 的对象名称,得到的是所有的数据,如果数据量太大,编译器中会省略中间一段,用省略号代替
plat.head()、plat.head(n=10)、plat.head(10) 查看前 XX 行数据
plat.tail(10) 查看后 XX 行数据
plat.platName、plat['platName'] 选取一列 如遇到 pandas 或者 python 的关键词,建议使用 plat['platName'] 这种形式选取某一列
plat[['platId','platPin','platName']] 选取多列
3. 数据列排序
result.sort_values(by='value',ascending=False)
by: 给哪些字段排序 如果是多字段则是 by=['platId','platName'] 这样子的
axis : 轴,一般按列的话,默认 0 就行。如果是 1,意思就是按索引来排序了(很少用到)
ascending: 默认是升序 True , 如果需要降序的话就 ascending = False
inplace: 默认是 False , 这个参数在 pandas 里面用处挺大,就是问你是不是要按排序的结果替换了,True 则是替换原结果,这样子你的 plat 数据就是按你排序的呈现了,如果是 False 则不替换原结果
kind: 默认'quicksort' 就行,快速排序。
下面这个是按索引排序
plat.sort_index():意思就是按索引号来排序
level 在多个索引的时候有用 值为索引号(0,1,2)或者索引名称
na_position:遇到空值 NaN,那么你是让它排在前面还是排在最后面'first'是排在前面,'last'则是丢到后面
鼓励大家自己敲代码,故以图片的形式贴的代码。这玩意儿需要锻炼耐心。对于 pandas 一些方法的参数,大家大胆去试错,就知道他们的用法在哪里了,只有错过才能刻骨铭心。
鼓励大家去看官方文档,人手一本,有 excel 基础,学 pandas 真的很简单的。换汤不换药
来源: https://www.cnblogs.com/buddyquan/p/8109825.html