首页 文章 精选 留言 我的

精选列表

搜索[Python],共10000篇文章
优秀的个人博客,低调大师

怎样借助Python爬虫给宝宝起个好名字

Beginning每个人一生中都会遇到一件事情,在事情出现之前不会关心,但是事情一旦来临就发现它极其重要,并且需要在很短的时间内做出重大决定,那就是给自己的新生宝宝起个名字。 因为要在孩子出生后两周内起个名字(需要办理出生证明了),估计很多人都像我一样,刚开始是很慌乱的,虽然感觉汉字非常的多随便找个字做名字都行,后来才发现真不是随便的事情,怎么想都发现不合适,于是到处翻词典、网上搜、翻唐诗宋词、诗经、甚至武侠小说,然而想了很久得到的名字,往往却受到家属的意见和反对,比如不顺口、和亲戚重名重音等问题,这样就陷入了重复寻找和否定的循环,越来越混乱。 于是我们再次回到网上各种搜索,找到很多网上给出的“男宝宝好听的名字大全”之类的文章,这些文章一下子给出几百上千个名字,看的眼花缭乱没法使用。而有不少的测名字的网站或者APP,输入名字能给出八字或者五格的评分,这样的功能感觉还挺好的能给个参考,然而要么我们需要一个个名字的输入进行测试、要么这些网站或者APP自身的名字很少、要么不能满足我们的需求比如限定字、要么就开始收费,到最后也找不到一个好用的。 于是我想做这么一个程序: 主要的功能,是给出批量名字提供参考,这些名字是结合宝宝的生辰八字算出来的;自己可以扩充名字库,比如网上发现了一批诗经里的好名字,想看看怎么样,添加进去就能用;可以限定名字的使用字,比如有的家族谱有限定,当前是“国”字辈,名字中必须有“国”字;名字列表可以给出评分,这样倒排后就可以从高分往低分来看名字; 通过这种方式可以得到一份符合自己孩子生辰八字、自己的家谱限制、以及自己喜好的名字列表,并且该列表已经给出了分数用于参考,以此为基准我们可以挨个琢磨找出心仪的名字。当然如果有新的想法,随时可以把新的名字添加到词库里面,进行重新计算。 程序的代码结构 代码介绍: /chinese-name-score 代码根目录/chinese-name-score/main 代码目录/chinese-name-score/main/dicts 词典文件目录/chinese-name-score/main/dicts/names_boys_double.txt 词典文件,男孩的双字名字/chinese-name-score/main/dicts/names_boys_single.txt 词典文件,男孩的单字名字/chinese-name-score/main/dicts/names_girls_single.txt 词典文件,女孩的双字名字/chinese-name-score/main/dicts/names_grils_double.txt 词典文件,女孩的单字名字/chinese-name-score/main/outputs 输出数据目录/chinese-name-score/main/outputs/names_girls_source_wxy.txt 输出的示例文件/chinese-name-score/main/scripts 一些对词典文件做预处理的脚本/chinese-name-score/main/scripts/unique_file_lines.py 设定词典文件,对词典中的名字去重和去空白行/chinese-name-score/main/sys_config.py 程序的系统配置,包含爬取得目标URL、词典文件路径/chinese-name-score/main/user_config.py 程序的用户配置,包括宝宝的年月日时分性别等设定/chinese-name-score/main/get_name_score.py 程序的运行入口 使用代码的方法: 1如果没有限定字,就找到词典文件names_boys_double.txt和names_grils_double.txt,可以在这里添加自己找到的一些名字列表,按行分割添加在最后即可;2如果有限定字,就找到词典文件names_boys_single.txt和names_girls_single.txt,在这里添加自己预先中意的单个字列表,按行分割添加在最后即可;3打开user_config.py,进行配置,配置项见下一节;4运行脚本get_name_score.py5在outputs目录中,查看自己的产出文件,可以复制到Excel,进行排序等操作; 程序的配置入口 程序的配置如下: 根据配置项setting[“limit_world”],系统自动来决定选用单字词典还是多字词典: 如果设置了该项,比如等于“国”,那么程序会组合所有的单字为名字用于计算,比如国浩和浩国两个名字都会计算;如果不设置该项,保持空字符串,则程序只会读取*_double.txt的双字词典 程序的原理 这是一个简单的爬虫。大家可以打开http://life.httpcn.com/xingming.asp网站查看,这是一个POST表单,填写需要的参数,点提交,就会打开一个结果页面,结果页面的最下方包含了八字分数和五格分数。 如果想得到分数,就需要做两件事情,一是爬虫自动提交表单,获取结果页面;二是从结果页面提取分数; 对于第一件事情,很简单,urllib2即可实现(代码在/chinese-name-score/main/get_name_score.py): 这里的params是个参数dict,使用这种方式,就进行了POST带数据的提交,然后从content得到了结果数据。 params的参数设定如下: 第二件事情,就是从网页中提取需要的分数,我们可以使用BeautifulSoup4来实现,其语法也很简单: 通过该方法,就能对HTML解析,提取八字和五格的分数。 运行结果事例 有了这些分数,我们就可以进行排序,是一个很实用的参考资料。 友情提示 1、分数跟很多因素有关,比如出生时刻、已经限定的字、限定字的笔画等因素,这些条件决定了有些名字不会分数高,不要受此影响,找出相对分数高的就可以了;2、目前程序只能抓取一个网站的内容,地址是http://life.httpcn.com/xingming.asp3、本列表仅供参考,看过一些文章,历史上很多名人伟人,姓名八字评分都非常低但是都建功立业,名字确实会有些影响但有时候朗朗上口就是最好的;4、从本列表中选取名字之后,可以在百度、人人网等地方查查,以防有些负面的人重名、或者起这个名字的人太多了烂大街;5、八字分数是中国传承,五格分数是日本人近代发明的,有时候也可以试试西方的星座起名法,并且奇怪的是八字和五个分数不同网站打分相差很大,更说明了这东西只供参考; 本文的代码已上传到github:https://github.com/peiss/chinese-name-score 来源:http://www.crazyant.net/2076.html文章版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。 原文发布时间为:2018-07-23本文作者:数据与算法之美本文来自云栖社区合作伙伴“数据与算法之美”,了解相关信息可以关注“数据与算法之美”。

优秀的个人博客,低调大师

NBA这三十年发生了什么,Python告诉你~

项目介绍 通过NBA近三十年的数据来看: 各项统计数据之间的相关性 整体风格上的变化 三分球的作用 数据介绍 关于数据源的介绍以及字段解释各位可以移步科赛网 查看,使用的数据源是 team_season.csv。 项目内容 导入所需包 # -*- coding: utf-8 -*- import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties import numpy as np import matplotlib as mpl import warnings import re warnings.filterwarnings('ignore') plt.rcParams['font.family'] = ['Microsoft YaHei'] 导入数据 导入数据并生根据比赛比分生成一列分差: data_team = pd.read_csv('/home/kesci/input/NBAdata/team_season.csv',encoding ='utf-8') # 根据比分生成一列分差 data_team[u'分差'] = (data_team[u'比分'].str.extract(r"(\d+\.?\d*)-(\d+\.?\d*)", expand=False)[0].astype('int') - data_team[u'比分'].str.extract(r"(\d+\.?\d*)-(\d+\.?\d*)", expand=False)[1].astype('int')) data_team.head() image.png 数据相关性 解析来我们看下各项统计数据之间有何相关性,使用的是pandas的内置函数dataframe.corr()来计算数据之间的皮尔逊相关系数,绝对值越接近1表明相关性越强。 data_corr = data_team.corr() plt.figure(figsize = (15,12)) sns.heatmap(data = data_corr,cmap = 'Blues',linewidths=0.25,annot=True) plt.show() 我们通过seaborn的heatmap来展示: image.png 我们能看到什么: 整体来看,各项数据之间其实相关性不大,当然除了命中数和得分这类傻子都知道的关系; 前场篮板与出手数的相关系数是0.57,这个也很好解释,篮板抢的越多,自然就会有更多的出手机会,但后场篮板与出手的相关系数就只有0.11了,看过多年球的应该都明白,后场篮板其实是由对手的命中率来决定的,只有前场篮板才能反映一个球队在拼抢篮板上是不是积极; 得分与助攻的相关系数是0.61,助攻越多,得分自然越多,当然这个并不能直接说明传球在球队进攻中发挥的作用,因为助攻统计的仅仅只是直接转化为得分的传球,但有一点可以肯定但是,得分多的球队,助攻肯定不会少。 得分与三分出手竟然是负相关,这点可能是我们大多数球迷会感到意外的,现在联盟都在拼了命的扔三分,结果居然是负相关。其实这点才反映了NBA这三十年的变化,在80/90年代,没那么多球队会选择三分球的,需要三分的时候可能是球队恰恰越到困难的时候,这也导致了与得分呈现负相关,当然现在这么多球队开始选择三分,肯定是有他的原因的,这个我们后面再看。 三十年,风格变了吗 可能看了很多年的球迷都在感叹: 以前是一个人扛起一支球队,每个球队都有那么一两个球星,现在都是球星扎堆; 以前是中锋的时代,内线肉搏是主流,现在都是飘在外线扔三分。 但事实真的是这样的吗或者说这些变化又是怎么体现到数据之中的,我们接下来看一看。 # 对比赛时间处理,取年份用于分组 data_team[u'年份'] = data_team[u'时间'].str.split('-').str[0] data_team[u'月份'] = data_team[u'时间'].str.split('-').str[1] data_grouped_years = data_team.groupby(data_team[u'年份']).mean().reset_index() plt.figure(figsize=(15, 12)) for i, column in enumerate(data_grouped_years.iloc[:, 1:19].columns, 1): plt.subplot(6, 3, i) plt.plot(data_grouped_years[u'年份'], data_grouped_years[column], 'r') my_x_ticks = ['1985', '1990', '1995', '2000', '2005', '2010', '2016'] plt.xticks(my_x_ticks) plt.ylabel(column) plt.show() 通过绘制折线图我们看下各项数据在三十年间的变化: image.png 我们能看到什么: 不论是投篮命中率还是出手,都有了下降,不过在近十年有所上升; 三分不论是命中率还是出手都有一个大幅度提升,三分出手数从85年的2个飙升到了24个左右; 罚球方面,命中率有波动,但罚球数一直是下降但趋势,这也不难理解,毕竟犯规更集中在内线,外线三分投的多了,内线肉搏自然少了,犯规数自然就下降了,罚球也就少了。 篮板有下降,但近十年也一直上涨,为什么上涨,后场篮板多了,前场篮板这三十年可是一直在下降,前文也说过了,前场篮板才是反映一个球队篮板拼抢的积极性,这也说明了,篮板是越来越不被重视了,现在是一个没有中锋的时代。 助攻,抢断,盖帽,失误,犯规,得分都在下降,真的是不看不知道,一看吓一跳。 总体来说,防守型的数据都是在下降,无论是篮板,抢断还是盖帽,外线出手暴涨。以前是内线的时代,现在是小球时代,中锋作用被弱化。毕竟NBA是一个商业联盟,更多的是迎合市场,一个更能得分的球员总是会比一个更能抢篮板的球员更受欢迎。 三分的变化 前文中我们也看到了,三分球这些年越来越被重视,我们接下来更加直观来展现下这些年三分选择的变化: data_team[u'三分占比'] = data_team[u'三分命中']*3/data_team[u'得分'] data_team_3ps_grouped = data_team[u'三分占比'].groupby( [data_team[u'年份'], data_team[u'月份']]).mean().reset_index() data_team_pivot = data_team_3ps_grouped.pivot(u'月份', u'年份', u'三分占比') plt.figure(figsize=(20, 5)) with sns.axes_style("white"): sns.heatmap(data=data_team_pivot, annot=True, linewidths=.5, cmap='Reds') plt.ylabel(u'月份') plt.show() 我们统计来这些年来三分球占比的情况,通过seaborn的heatmap做如下展示: image.png 我们能看到什么: 85年的时候三分球得分占比不到2%,什么概念,平均下来一场得分100的球,三分只能占到2分,一个球不到,但到了2016年,这个比重以及上升到27%; 95-97年之间三分球有个较大幅度上涨,到97-98赛季又下降了。 三分合理吗 现在都这么拼命的扔三分,真的就很合理吗? 在讨论三分合理性之前,我们先引入一个概念——有效命中率 eFG%(effective Field Goal percentage)通常翻译为“有效命中率”,该数据优化了三分球对于球员命中率的影响。 考虑到每一个三分球实际上相当于命中了1.5个两分球,因此,eFG%的计算公式为:eFG% = ( FG + 0.5 * 3P ) / FGA,其中: FG:投篮命中数; 3P:三分命中数 FGA:投篮出手总数 其实简单来说,投中一个三分,算1.5个投篮命中数,下面我们来看下近三十年来,有效命中率是怎么在变化。 data_team[u'有效命中率'] = (data_team[u'命中']+0.5 * data_team[u'三分命中'])/data_team[u'出手'] data_team_efg_grouped = data_team.groupby( [u'年份'])[u'有效命中率', u'投篮'].mean().reset_index() plt.figure(figsize=(15, 5)) plt.plot(data_team_efg_grouped[u'年份'], data_team_efg_grouped[u'有效命中率'], 'r') plt.plot(data_team_efg_grouped[u'年份'], data_team_efg_grouped[u'投篮'], 'g') my_x_ticks = ['1985', '1990', '1995', '2000', '2005', '2010', '2016'] plt.xticks(my_x_ticks) plt.legend(loc='best') plt.show() 我们使用折线图来看这些年真实命中率的变化: image.png 我们可以看到,这些年整体命中率虽然是在下降,不过真实命中率反而要高于以前了,可能对于很多老球迷来说,这样的NBA少了很多对抗,观赏性不如以前,不过我们还是可以看到,进攻效率却更高了,当然这样的变化是好是坏,就因人而异了。 最后 结论性的东西就不说了,前文都已经说了很多了。 NBA这么多年变化不少,作为一个球迷的我来说,变化其实也不小,想着以前高中大学的时候,为了自己喜欢的球星,跟同学争的面红耳赤也争不出个好歹,大学的时候只要上午有比赛,铁定是逃课去看比赛的,渐渐的参加工作之后,看NBA的时间没那么多了,搞得现在好多新生辈的球员都不认识了,关注的永远只有老詹,有时候看到一些说老詹不好的话,也没那么生气了,现在希望的就是老詹还能多打几年,等老詹退役了,我也应该就不再年轻了。 之前一直在科赛网-NBA这些年 上更新这个项目的,不过一直没怎么整理,特别是文字部分,很多也是在一边摸索一边统计,后期发现有意义的会再更新到简书的。peace~

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册