练习数据处理库
activityio的Python项目详细描述
练习/活动数据已成为一种丰富的资源,但由于文件格式的多样性,应用任何一种复杂的分析都很困难。这个python库的目的是修改这些格式中的一些,并以可预测和可用的形式显示数据。此外,api与awesomePandas library紧密地结合在一起,并且是其扩展。
稳定性
请注意,这个包仍然是一个alpha版本,因此breaking changes很可能是。
安装
PYPI上提供该软件包:
$ pip install activityio
示例用法
在activityio的顶层有一个read函数,它根据文件扩展名来分派适当的读取器:
>>> import activityio as aio >>> data = aio.read('example.srm')
注意用自己活动文件的路径替换'example.srm'。
但您也可以直接调用子包:
>>> from activityio import srm >>> data = srm.read('example.srm')
^上面例子中的{tt5}$是pandas.DataFrame的一个子类,提供了一些简洁的附加功能。最值得注意的是,某些列是“神奇的”,因为它们返回特定的pandas.Series子类。这些子类简化了单元切换,并提供了其他有用的方法:
>>> type(data) <class 'activityio._types.activitydata.ActivityData'>
>>> data.head(5) temp lap dist alt cad pwr speed hr time 00:00:00 26.1 1 1.027 67 0 0 1.027 71 00:00:01 26.1 1 2.721 67 0 0 1.694 71 00:00:02 26.2 1 4.415 67 0 0 1.694 71 00:00:03 26.2 1 6.331 67 0 0 1.916 71 00:00:04 26.2 1 8.469 67 0 0 2.138 75
>>> data.normpwr() 249.54104255943844
>>> type(data.speed) <class 'activityio._types.columns.Speed'>
>>> data.speed.base_unit 'm/s' >>> data.speed.kph.mean() # use a different unit 38.485063801685477
>>> data.dist.base_unit 'm' >>> data.dist.miles[-1] 134.78580023361226
>>> data.alt.base_unit 'm' >>> data.alt.ascent.sum() 1898.0 ```
但是注意如果更改列名,则会失去此功能
>>> data = data.rename(columns={'alt': 'altitude'}) >>> type(data.altitude) <class 'pandas.core.series.Series'>
API注释
主包由子包组成,这些子包包含文件格式的读取逻辑,文件格式以子包命名。(例如,activityio.fit用于分析ant/garmin fit文件。)
最终逻辑在_reading模块中定义,该模块提供两个函数:gen_records和read_and_format。
- gen_records是一个生成函数,用于迭代文件中的数据点。数据表的行(如果您愿意)。“记录”是字典对象。
- read_and_format使用上述生成器返回ActivityData对象。
read_and_format位于别名为read的子包的顶层,因此读取文件看起来像srm.read('path_to_file.srm')。gen_records以相同的名称导入。
模块中还提供了一些有用的tools,名称相同。