实现对数据的快速处理以及对带有不确定度的数据的运算和修约
Project description
auto-Dataconsuming(0.0.13)
1.介绍
这个库分为两个部分RangeType和DataType
1.1 RangeType
可以用指定误差或给出多次测量得到的误差所给出带有误差的数据,可以在输出时对数据进行修约
1.2 DataType
可以通过输入数据字典和处理函数输出处理后的数据所产生的表格
2.安装
首先,在cmd中输入以下命令安装
pip install DataConsumer
其应当下载最新版本的DataConsumer,但请加以检查
其依赖库有typing
,pandas
,numpy
和collections
在安装完成后,使用
from DataConsumer import *
导入所需的类型(已经包含了RangeType和DataType)
如果不希望安装numpy等依赖,可以只使用RangeType部分,此时,在导入时会有警告信息
3.使用
3.1 RangeType
3.1.1 RangeNumber类
这个类储存一个带有误差的数据.
3.1.1.1 初始化
为了初始化一个RangeNumber对象,需要提供以下信息:量的值,上误差,下误差
例如,以下代码初始化了一个量值为10,上误差0.01,下误差-0.02的RangeNumber对象
RangeNumber(10,0.01,-0.02)
同时,一般上误差的值等于下误差的值,故我们可以忽略下误差,只输入上误差
例如,以下代码初始化了一个量值为10,上下误差绝对值均为0.01的RangeNumber对象
RangeNumber(10,0.1)
而在运算时,如果遇到了准确数,可以直接省去误差单参数初始化一个RangeNumber对象
(0.0.13添加)err_str设为False,则不显示误差大小,只进行修约
考虑到在使用时经常会遇到一批数据有相同的误差,所以可以使用RangeNumber.fromlist方法从浮点数列表直接获得RangeNumber的列表例如以下代码会返回一个RangeNumber列表
RangeNumber.fromlist([1,2,3,4,5],0.01,-0.02)
3.1.1.2 支持操作
你可以读取一个RangeNUmber实例中的wholedata
属性,其会储存完整的数据,以(downerr,mainnumber,uperr)的方式组织,但是你不可以修改它们
RangeNumber重载了加,减,乘,除和乘方运算符,但需要保证RangeNumber为左操作符,右操作符为RangeNumber或float均可
同时,RangeNumber.log(x,base)方法对RangeNumber可以求对数,用法与math.log相同,但x为一个RangeNumber对象
注意以上方法虽然也会对误差进行调整,并且目前可以对上下误差相同的情况做出准确的判断
但在上下误差不同的时候可能会出错
如果用一个RangeNumber强制转换为float,这个float中会储存RangeNumber中的主值,因此你可以将RangeNumber直接用于math库中注意此时其行为与float一致
str(RangeNumber)会返回一个Latex字符串,例如以下代码
a=RangeNumber(10,0.01,-0.2)
print(a)
会输出:$(10.0)^{0.01}_{-0.2}$
在Latex环境下,为$(10.0)^{0.01}_{-0.2}$
其自带数字修约
(0.0.13添加)err_str设为False,则不显示误差大小,只进行修约
3.1.2RangeFromList类
该类为RangeNumber的子类,有所不同的是其初始化方式
3.1.2.1初始化
RangeFromList使用一个float或RangeNumber列表实现对同一量的多次测量,例如:
RangeFromList([0.1,0.3,0.2])
但在单次测量亦存在误差的情况下,可以结合使用fromlist方法,例如:
RangeFromList(RangeNumber.fromlist([0.1,0.2,0.2],0.1))
即可实现单次测量误差0.1,测量三次的效果
3.2DataType
3.2.1DataConfig类
该类型用于储存数据的相关参数,目前仅含有对于单位和名称(及其缩写)的储存
3.2.1.1初始化
其初始化函数需要按序接受:数据全称,数据的简称,单位 例如以下代码初始化了一个DataConfig类
DataConfig("转动惯量","J","kgm^2")
数据简称和单位支持Latex语法
3.2.1.2 支持操作
tabular_format方法可以将一个数据信息形成一个表头格式的Latex风格字符串 例如上文所提到数据可以被转化为如下形式
转动惯量$J$($\mathbf{kgm^2}$)
但该操作主要是用于DataConsumer类型
3.2.2DataConsumer类
该类型储存输入数据的词典和用于处理的函数,对数据进行格式化
3.2.2.1初始化
初始化时,需要包括一个输入数据简称的字典(键为数据简称,值为数据列表)
一个用于处理数据的函数(参数名称为输入数据简称,对一条数据进行处理,返回一个包含以输出数据为值,输出数据简称为键的字典如果希望将输入数据保留,则需要将输入数据的字典整合于其中)
一个包括输入输出数据信息的字典(键为输入输出数据简称,值为输入输出数据的信息的DataConfig类实例)
(0.0.13添加)err_str设为False,则不显示误差大小,只进行修约
3.2.2.2支持操作
该类型的字符串转换方法可以输出一个Markdown风格的表格 使用latexstr可以输出一个Latex风格表格
可以对函数进行拟合与画图,见get_fitted和draw_fitted的注释
3.2.2.3实例
该实例使用的为3.13瑞利盘测量细线扭力系数的数据
from DataConsumer.DataType import *
m2=RangeFromList([1.80,1.78,1.81])
m1=RangeFromList([1.43,1.43,1.41])
m3=RangeFromList([2.24,2.25,2.25])#对质量的三次测量
mlist=[m1,m2,m3]#不同质量圆片
rlist=RangeNumber.fromlist([40,45,50],0.01)#从已有数据得到半径
t1=RangeFromList([27.58/2,41.69/3])
t2=RangeFromList([59.5/4,57.07/4,62.41/4,58.88/4,53.46/5,46.5/3])
t3=RangeFromList([56.98/3,60.00/3,60.03/3])#对周期的多次测量
tlist=[t1,t2,t3]#不同质量圆片周期
idict={"m":mlist,"r":rlist,"t":tlist,"n":[1,2,3]}#输入数据内容
confd={"m":DataConfig("质量","m","kg"),\
"n":DataConfig("编号","n"),\
"r":DataConfig("半径","r","m"),\
"T":DataConfig("周期","T","s"),\
"J":DataConfig("转动惯量","J","kgm^2"),\
"k":DataConfig("测得扭力系数","k","kgm^2s^{-2}")}#数据信息
def con(m,r,t,n):#处理函数
pis=math.pi**2*4
m/=1000
r/=1000
i=r*r*m/4
k=(i/(t*t))*pis
sigma=m/(r*r)
return {"n":n,"m":m,"r":r,
"T":t,"J":i,
"k":k}
print(DataConsumer(idict,con,confd))#输出结果
运行该段代码,即可得到如下表格(需要支持Latex环境)
编号$n$ | 质量$m$($\mathbf{kg}$) | 半径$r$($\mathbf{m}$) | 周期$T$($\mathbf{s}$) | 转动惯量$J$($\mathbf{kgm^2}$) | 测得扭力系数$k$($\mathbf{kgm^2s^{-2}}$) |
---|---|---|---|---|---|
1 | $(0.001423)^{7e-06}_{-7e-06}$ | $(0.040000)^{1e-05}_{-1e-05}$ | $(13.84)^{0.05}_{-0.05}$ | $(5.693\times 10^{ -7 })^{3e-09}_{-3e-09}$ | $(1.1729\times 10^{ -7 })^{8e-10}_{-8e-10}$ |
2 | $(0.001797)^{9e-06}_{-9e-06}$ | $(0.045000)^{1e-05}_{-1e-05}$ | $(14.3)^{0.7}_{-0.7}$ | $(9.096\times 10^{ -7 })^{4e-09}_{-4e-09}$ | $(1.76\times 10^{ -7 })^{1e-08}_{-1e-08}$ |
3 | $(0.002247)^{3e-06}_{-3e-06}$ | $(0.050000)^{1e-05}_{-1e-05}$ | $(19.7)^{0.3}_{-0.3}$ | $(1.4042\times 10^{ -6 })^{2e-09}_{-2e-09}$ | $(1.433\times 10^{ -7 })^{3e-09}_{-3e-09}$ |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for DataConsumer-0.0.16-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03fe28271d6f4bf55636fa95ee49ce3e4372db97f9a7e91f1cf05fc5de020a18 |
|
MD5 | 8f2acad825cdc8c91df7fbb2975845ca |
|
BLAKE2b-256 | 6e8e7f53ab3345693b8e42d2e2629429c33e377c88efd2ff0fc04405c526ed47 |