只需一行代码,就可以将anki数据库加载为pandas数据框!

ankipandas的Python项目详细描述


Build StatusCoverallsDocumentation StatusPypi statusGitterLicenseBlack

注意:这个项目还是很新鲜的。小心尝试并给出反馈!

说明

https://raw.githubusercontent.com/klieret/AnkiPandas/master/misc/logo/logo_github.png

Anki是最流行的间隔重复学习抽认卡系统之一, pandas是最流行的用于数据分析和操作的python包。 那么,还有什么比把两者结合在一起更好的呢?

使用AnkiPandas可以使用pandas轻松分析或操作 安基抽认卡。

功能

  • select:使用^{tt2}轻松选择卡片、笔记或评论的任意子集$ (one of many introductionsofficial documentation
  • visualize:使用pandas的强大功能built in tools或切换到更通用的 seaborn(统计分析)或matplotlib
  • maniple:对表应用快速批量操作(例如添加标记、更改组、设置字段内容、挂起卡等) 或者遍历表并逐步执行这些操作
  • add:添加新笔记和卡片
  • 导入和导出:pandas可以导出到csv、ms excel、html、json,… (io documentation

pros

  • easy installation:通过python包管理器安装(独立于anki安装)
  • simple:只需一行代码即可开始
  • 方便:将有关cardsnotesmodelsdecks和更多信息集中在一个表中!
  • 完全文档化Documentation on readthedocs
  • 经过良好测试:超过100个单元测试以保持一切正常

备选方案:如果您的主要目标是添加新卡、模型等,您还可以 看看genanki项目。

安装

AnkiPandas可用作pypi package 可以使用python package manager

安装或升级
pip3 install --user --upgrade ankipandas

对于最新的开发版本,也可以使用克隆版本 此存储库的:

git clone https://github.com/klieret/ankipandas/
cd ankipandas
pip3 install --user --upgrade .

用法

启动非常简单:

fromankipandasimportCollectioncol=Collection()

并且col.notes将是包含所有注释的数据帧,并且 使许多事情变得简单的方法。 类似地,您可以使用col.cardscol.revs访问卡片或评论。

如果调用时没有任何参数Collection()将尝试查找 你的anki数据库本身。不过,这可能需要一些时间。 为了方便起见,只需提供(部分)到数据库的路径,然后 (如果您有多个用户)您的anki用户名,例如 Collection(".local/share/Anki2/",user="User 1")在许多Linux上 装置。

要获取有关每个列的解释的信息,请使用 notes.help_cols()

查看documentation以了解有关 可用的方法!

一些基本示例:

分析

显示所有卡组每张卡的评论次数(重复次数)的直方图:

col.cards.hist(column="creps",by="cdeck")

将每层水蛭的数量显示为饼图:

cards=col.cards.merge_notes()selection=cards[cards.has_tag("leech")]selection["cdeck"].value_counts().plot.pie()

查找模型MnemoticModel的所有注释,其中Mnemotic字段为空:

notes=col.notes.fields_as_columns()notes.query("model=='MnemoticModel' and 'Mnemotic'==''")

操纵

difficult-japanesemarked标记添加到包含标记的所有注释中 Japaneseleech

selection=col.notes.has_tags(["Japanese","leech"])selection=selection.add_tag(["difficult-japanese","marked"])col.notes.update(selection)col.write(modify=True)# Overwrites your database after creating a backup!

对于用English标记的LanguageModel模型的所有注释,将language字段设置为English

selection=col.notes.has_tag(["English"]).query("model=='LanguageModel'").fields_as_columns()selection["language"]="English"col.notes.update(selection)col.write(modify=True)

将所有标记为leech的卡移动到卡组Leeches Only

selection=col.cards.has_tag("leech")selection["cdeck"]="Leeches Only"col.cards.update(selection)col.write(modify=True)

贡献

非常感谢您的帮助!建议、错误报告和功能请求 最好以github issues的形式打开。你也可以先在 gitter community。 如果您想自己编写代码,欢迎您提交pull request

许可证和免责声明

这个软件是根据MIT license授权的。(尽管尽了最大的努力) 来了,没有任何保证。 这个标志的灵感来自Anki logolicense) 以及logo of the pandas packagelicense2)。 此库及其作者与 安基或熊猫项目的任何方式。

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

推荐PyPI第三方库


热门话题
java组在不同线程中记录消息   java Wicket挂载404错误页   Java:如何制作对象数组的副本?   类似Windows中的java日期时间选择器   java无法获取JTextField用户输入以搜索文本文件   安卓 Java:如何随机更改背景和字体颜色   Java定时器中的摆动变化延迟   java让Selenium暂停X秒   将响应传递到视图时发生java Nativescript错误   java刷新安卓列表视图的最佳方式是什么?   单java进程的多线程队列/工作线程体系结构   web服务Java NoSuchMethodException   java groupingBy和filter一步到位   java游标。getCount()给定错误   即使引用的文件位于项目根目录中,java PrintWrite仍会持续引发“未找到文件”异常