消失了一周的 Kevin 归来了!本期我们不讲敏感的东西。因为*饭已经吃得很饱了。
讲讲一个朋友摇号(车牌)的辛酸史。以及我如何用 python 的技术(爬虫,数据分析,可视化)帮他找到原因,并让他更伤心的故事。
文中的数据仅供交流学习,不能作为其他使用依据。文中统一使用了第一人称我,其中摇号的是我朋友。
辛酸史
摇号次数又默默地执行了一次+=1,
当初早知道摇六年都摇不到,还不如趁早又便宜买一块了。。
二月份个人中签率为0.54%!!
这是个什么概念??
平均情况要摇近 200 次才有可能中 1 次!!200 次,要 16.6 年!!
我估计那个时候,人们都开飞机出行了吧。。
大学同宿舍的老王,
参加工作后,把自行车换成了电瓶车,
摇了三次号后把电瓶车换成了小汽车,
天天载着不同的妹子到处兜风!!!
这才是青春岁月应有的记忆!!!!
而我参加工作后,从自行车换成电瓶车,从电瓶车直接换成了地铁!!!
再看着 100 万人摇 5000 多块牌照,
感觉我自己就是 5,000/1,000,000 里的分母中凑数的。
不行!我要跟命运做一回抗争,
我要找一找摇车牌的规律!!
说干就干!
获取数据
数据的获取可以用爬虫,也可以自己手工复制。这里假设使用复制的方法。实际上我使用的是爬虫。相关代码获取方法我会在文末说明。
网站目标就是某市的小客车增量指标网站。你可以用同样的方法分析你自己城市的网站。
于是我熟练地在浏览器输入了那个让我欢喜让我忧的url,
一番行云流水操作下来后,
把每个中签者的姓氏,通过复制粘贴,复制粘贴,复制粘贴…
全部复制了下来。
接下来是数据分析阶段。
开始数据分析
请大家给我点时间~我要点一下,哪个姓氏老是中签…
经过三天三夜的努力,我终于点完了…
继续数据分析,亮出 python,做个词云图,可以看得更直观点:
分享代码:
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 1.读入txt文本数据
# 只要读入文本数据,词云这个库就会自动对每个出现的字符进行计数,并按数量多少生成相对尺寸的字符图。
text = open(r'yaohao_data_analysis.txt', "r",encoding='utf-8').read()
# 2.生成词云图,这里需要注意的是WordCloud默认不支持中文,所以这里需已下载好的中文字库
# 无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'
wc = WordCloud(
# 设置字体,不指定就会出现乱码
font_path=r'./font.otf',
# 设置背景色
background_color='white',
# 设置背景宽
width=800,
# 设置背景高
height=600,
# 最大字体
max_font_size=200,
# 最小字体
min_font_size=50,
mode='RGBA'
#colormap='pink'
)
# 产生词云
wc.generate(text)
# 保存图片
wc.to_file(r"wordcloud.png") # 按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
# 3.显示图片
# 指定所绘图名称
plt.figure("摇号分析图")
# 以图片的形式显示词云
plt.imshow(wc)
# 关闭图像坐标系
plt.axis("off")
plt.show()
再来个中签率最高前 20 个姓的条状图:
分享代码:
import re
from collections import Counter
import matplotlib.pyplot as plt
# 实例化一个counter对象
count = Counter()
# 将所有的姓氏正则匹配出来
with open('./yaohao_data_analysis.txt','r',encoding="utf-8")as f:
text = f.read()
f_name_list = re.findall(r'[\u4E00-\u9FA5]',text)
for n in f_name_list:
count[n] += 1
# 将count转成字典
d = dict(count)
# 将无序的字典进行排序
def dict_sort(dic):
l=list(dic.items())
l.sort(key=lambda x:x[1],reverse=True)
return l
key=[]
value=[]
for k,v in dict_sort(d):
key.append(k)
value.append(v)
# 生成条形图
# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.bar(key[:20], value[:20])
plt.title('摇号分析条形图')
plt.show()
排名第一的真的是隔壁老王!!
后记
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。