棒球数据与Python分析

pybbda的Python项目详细描述


皮布达

pybbda是的包 Python棒球数据与分析。在

数据

pybbda旨在为 从各种来源访问棒球数据。 数据公开为pandasDataFrames

它目前支持的数据源有:

  • 拉曼数据

  • 棒球参考战

  • Fangraphs排行榜和公园因素

  • 追溯事件数据

  • Statcast逐节距数据

分析

pybbda还提供分析工具。在

目前支持:

  • 马塞尔投影

  • 击球轨迹

  • 基于马尔可夫链的运行期望

计划在将来的版本中提供以下内容:

  • 模拟

  • 还有更多。。。!在

安装

此软件包在PyPI上可用,因此您可以使用 pip

$ pip install -U pybbda

或者您可以安装最新的主分支 直接从github repo使用 pip

^{pr2}$

或者下载源代码

$ git clone git@github.com:bdilday/pybbda.git
$ cd pybbda
$ pip install .

要求

此包显式 支持Python 3.6和{}。它的目标 支持Python 3.8,但这不是保证。 它显式地不支持任何版本 在Python 3.6之前,包括Python 2.7。在

安装数据

这个包裹没有任何数据。相反,它提供了工具 从各种来源获取和存储数据。在

要安装数据,您可以使用update工具中的pybbda.data.tools 子模块。在

例如

$ python -m pybbda.data.tools.update -h
usage: update.py [-h][--data-root DATA_ROOT] --data-source
                 {Lahman,BaseballReference,Fangraphs,retrosheet,all}[--make-dirs][--overwrite][--min-year MIN_YEAR][--max-year MAX_YEAR][--num-threads NUM_THREADS]

optional arguments:
  -h, --help            show this help message and exit
  --data-root DATA_ROOT
                        Root directory for data storage
  --data-source {Lahman,BaseballReference,Fangraphs,retrosheet,all}
                        Update source
  --make-dirs           Make root dir if does not exist
  --overwrite           Overwrite files if they exist
  --min-year MIN_YEAR   Min year to download
  --max-year MAX_YEAR   Max year to download
  --num-threads NUM_THREADS
                        Number of threads to use for downloads

数据将下载到--data-root,默认为 PYBBDA_DATA_ROOT

详细说明是provided in the documentation

示例用法

安装部分或全部数据后,可以开始使用 包裹。在

下面是访问Lahman数据的一个例子。 更多examples are included in the documentation

拉曼数据

>>>frompybbda.dataimportLahmanData>>>lahman_data=LahmanData()>>>batting_df=lahman_data.battingINFO:pybbda.data.sources.lahman.data:data:searchingforfile/home/bdilday/.pybbda/data/Lahman/Batting.csv>>>batting_df.head()playerIDyearIDstintteamIDlgIDGABRH2B3BHRRBISBCSBBSOIBBHBPSHSFGIDP0abercda0118711TRONaN14000000.00.00.000.0NaNNaNNaNNaN0.01addybo0118711RC1NaN25118303260013.08.01.040.0NaNNaNNaNNaN0.02allisar0118711CL1NaN29137284045019.03.01.025.0NaNNaNNaNNaN1.03allisdo0118711WS3NaN271332844102227.01.01.002.0NaNNaNNaNNaN0.04ansonca0118711RC1NaN251202939113016.06.02.021.0NaNNaNNaNNaN0.0>>>batting_df.groupby("playerID").HR.sum().sort_values(ascending=False)playerIDbondsba01762aaronha01755ruthba01714rodrial01696mayswi01660...mcconra010mccolal010mccluse010mcclula010aardsda010Name:HR,Length:19689,dtype:int64

CLI工具

运行预期

有一个cli工具用于计算运行预期 马尔可夫链。在

$ python -m pybbda.analysis.run_expectancy.markov.cli --help

这个马尔可夫链使用了 9个击球手,而不是假设每个击球手都有相同的特征。 也可以指定运行概率,尽管它们适用于 所有击球手都一样。在

你可以使用一系列的 概率,或参考球员赛季 格式{playerID}_{season},其中playerID是 拉赫曼的身份证和季节是4位数的一年。例如,到 参考Rickey Henderson的1982赛季,使用henderi01_1982。在

配置列表是通过在列表槽后加上 5个概率,或一个球员赛季id。0号线槽是一个代码 把所有九个击球手都赋给这个值。任何其他特定插槽 将按说明填写。在

默认情况下,要建模的输出数为3。可以通过设置 环境变量PYBBDA_MAX_OUTS。在

Example:对所有9个插槽使用默认的概率集,而不使用额外的基数

$ python -m pybbda.analysis.run_expectancy.markov.cli -b 00.08 0.15 0.05 0.005 0.03 --running-probs 0000 
mean score per 27outs=3.5227
std. score per 27outs=2.8009

Example:对所有9个插槽使用默认概率集,并使用默认概率获取额外基数

$ python -m pybbda.analysis.run_expectancy.markov.cli -b 00.08 0.15 0.05 0.005 0.03
mean score per 27outs=4.2242
std. score per 27outs=3.0161

Example:对所有9个插槽使用默认的概率集,但是 Rickey Henderson 1982年击球领先(使用27次出局,而不是3次)

$ PYBBDA_MAX_OUTS=27  python -m pybbda.analysis.run_expectancy.markov.cli -b 00.08 0.15 0.05 0.005 0.03 -i 1 henderi01_1982
WARNING:pybbda:__init__:Environment variable PYBBDA_DATA_ROOT is not set, defaulting to /home/bdilday/github/pybbda/pybbda/data/assets
INFO:pybbda.data.sources.lahman.data:data:searching for file /home/bdilday/github/pybbda/pybbda/data/assets/Lahman/Batting.csv
mean score per 27outs=4.3628
std. score per 27outs=3.0999

Example:对所有9个插槽使用默认的概率集,但是 里基·亨德森1982年击球领先,贝比鲁斯1927年击球清理(使用27次出局,而不是3次)

$ PYBBDA_MAX_OUTS=27  python -m pybbda.analysis.run_expectancy.markov.cli -b 00.08 0.15 0.05 0.005 0.03 -i 1 henderi01_1982 -i 4 ruthba01_1927 
WARNING:pybbda:__init__:Environment variable PYBBDA_DATA_ROOT is not set, defaulting to /home/bdilday/github/pybbda/pybbda/data/assets
INFO:pybbda.data.sources.lahman.data:data:searching for file /home/bdilday/github/pybbda/pybbda/data/assets/Lahman/Batting.csv
mean score per 27outs=5.1420
std. score per 27outs=3.3996

贡献

欢迎社会各界捐款。 参见contributing guide。在

许可证

GPLv2

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用JNA创建同一库的多个实例?   java在将Graphql查询作为JSON字符串传递时收到意外的令牌错误   OAuth2 oltu的java问题   java桌面应用程序使用的好的嵌入式数据库是什么?   java Firebase数据库高级查询选项   java正在使磁盘上的EhCache元素过期   java 安卓还原处于backstack中的片段的实例状态   XMemcached中的java异步集   java TimescaleDB是否使用与Postgresql完全相同的JDBC驱动程序?   java从网站c读取信息#   检查java Android中的字符串是否只包含数字和空格   c#如何向web服务发送特殊字符?   grails无法调用需要java的方法。lang.类参数?   java我在组合框中调用的方法不会运行所有代码,它只运行部分代码   java发送带有标头的HTTP GET请求