文档感知数据读、写和分析工具

MetaCSV的Python项目详细描述


不受欢迎的= METACSV [谚] < BR>< BR>
图片::https://img.shields.io/travis/climateimpactlab/metacsv/master.svg?style=正方形
:目标:https://travis-ci.org/climateimpactlab/metacsv < BR>
图片::https://img.shields.io/pypi/v/metacsv.svg?style=正方形
:目标:https://pypi.python.org/pypi/metacsv < BR>
图片::https://img.shields.io/covertalls/delgadom/metacsv/master.svg?style=正方形
:目标:https://coveralls.io/github/delgadom/metacsv?分支=主 < BR>
图片::https://img.shields.io/pypi/pyversions/metacsv.svg?style=正方形
:目标:https://pypi.python.org/pypi/metacsv < BR>
图片::https://anaconda.org/delgadom/metacsv/badges/version.svg
:目标:https://anaconda.org/delgadom/metacsv < BR>
图片::https://anaconda.org/delgadom/metacsv/badges/downloads.svg
:目标:https://anaconda.org/delgadom/metacsv
图片::https://badges.gitter.im/metacsv/lobby.svg
:alt:在https://gitter.im/metacsv/lobby加入聊天
:目标:https://gitter.im/metacsv/lobby?utm_source=徽章和utm_medium=徽章和utm_campaign=公关徽章和utm_content=徽章 < BR>
``metacsv``文档感知数据读、写和分析工具 < BR>
请参阅readthedocs上的完整文档_ < BR>
_阅读文档:http://metacsv.rtfd.org < BR>
概述
========= < BR>
**metacsv**提供工具,用符合yaml的头读取csv数据
直接进入"pandas"、"series"、"dataframe"、"panel"或
``xarray```dataarray``或``dataset``。 < BR>
数据规范
-- < BR>
可以使用yaml格式的头指定数据,并带有yaml*开始标记*
上面的字符串(`--`),下面的yaml*结束标记*字符串(``…``) 块。只允许一个yaml块。如果文档分隔字符串不是
文件的第一行(非空白)将是
由csv读取器解释。yaml数据可以具有任意的复杂性。 < BR>
代码块::python < BR>
>;>>将metacsv、numpy作为np导入
>;>;将stringio导入为io为python 3导入io
>>gt;doc=io.stringio(''
…---
…作者:一个人
…日期:2000-12-31
…变量:
…流行音乐:
…名称:人口
…单位:百万
…国内生产总值:
…名称:产品
…单位:2005亿美元
……
…地区、年份、人口、国内生产总值
…美国,2010309.313599.3
…美国,2011311.713817.0
…加拿大,2010年,34.01240.0
…2011年,34.31276.7
…'') < BR>< BR>< BR>
在python中使用metacsv格式的文件
—— < BR>< BR>
使用类似pandas的语法将metacsv格式的数据读入python: < BR>
代码块::python < BR>
>;>;df=metacsv.read_csv(doc,index_col=[0,1])
>;>;df doctest:+规范化空白
<;metacsv.core.containers.dataframe(4,2)>;
国内生产总值
地区年份
美国2010 309.3 13599.3
2011年311.7 13817.0
2010年5月34日1240.0
2011年34.3 1276.7
<;空行>;
变量
国内生产总值:
命名产品
单位2005亿美元
弹出:
姓名填充
单位:百万
属性
作者:一个人
日期:2000-12-31 < BR>
这些属性可以从一个数据容器传输到另一个数据容器: < BR>
代码块::python < BR>
>>>np.随机种子(1)
>;。>;s=元空间序列(np.random.random(6))

<;metacsv.core.containers.series(6L,)>;
0.417022
10.720324
2 0.000114
3 0.302333
4 0.146756
50.092339
数据类型:float64
>>>s.attrs=测向属性

<;metacsv.core.containers.series(6L,)>;
0.417022
10.720324
2 0.000114
3 0.302333
4 0.146756
50.092339
数据类型:float64
<;空行>;
属性
作者:一个人
日期:2000-12-31 < BR>< BR>
可以复制所有元SV属性,包括"attrs"属性对象,
分配给新对象并删除。因为这些属性在很大程度上
正常熊猫数据处理不稳定,建议属性
在尝试数据工作之前复制,然后在IO之前重新分配
转换。 < BR>< BR>
将metacsv数据导出为其他格式
——--- < BR>
CSV
~~~~~~~~~ < BR>
metacsv"series"或"dataframe"可以作为前缀为csv的yaml写入
使用与其对应的"pandas"相同的"to-csv"语法: < BR>
代码块::python < BR>
>>gt;df.attrs['新属性']="已在python中更改!"
>>>df.to_csv('my_new_data.csv') < BR>
生成的csv将包含一个yaml格式的头和原始的
更新元数据以包含attr['new attribute']。, < BR>< BR> 熊猫
~~~~~~~~~~~~~~~ < BR>
坐标和metacsv属性可以很容易地从metacsv中剥离
容器: < BR>
代码块::python < BR>

国内生产总值
地区年份
美国2010 309.3 13599.3
2011年311.7 13817.0
2010年5月34日1240.0
2011年34.3 1276.7 < BR>< BR>< BR>
夏利/netcdf
~~~~~~~~~~~~~~~ < BR>
`xarray<;http://xarray.pydata.org/>;``为
在索引的"ndarray"数据上操作。它是根据"netcdf"数据建模的
存储格式在气候科学中经常使用,但对于许多
具有高阶数据的应用程序。 < BR>< BR>< BR>
代码块::python < BR>
>>>ds=df.to_xarray()

<;xarray.dataset>;
尺寸:(地区:2,年份:2)
坐标:
*区域(区域)对象"usa"可以
*国际64年(年)2011
数据变量:
POP(地区,年份)浮动64 309.3 311.7 34.0 34.3
GDP(地区、年份)浮动64 1.36E+04 1.382E+04 1.24E+03 1.277E+03
属性:
作者:一个人
日期:2000-12-31
新属性:在python中更改!
>>gt;ds.to_netcdf('my_netcdf_data.nc') < BR>
酸洗
~~~~~~~~~ < BR>
腌制就像熊猫一样有效。 < BR>
代码块::python < BR>
>>>>df.to_pickle("my_metacsv_pickle.pkl")
>>>metacsv.read_pickle('my_metacsv_pickle.pkl')
<;metacsv.core.containers.dataframe(4,2)>;
国内生产总值
地区年份
美国2010 309.3 13599.3
2011年311.7 13817.0
2010年5月34日1240.0
2011年34.3 1276.7 < BR>
变量
gdp:ordereddict([("name","product"),("unit","2005$bn"))
pop:ordereddict([("name","population"),("unit","millions"))
属性
作者:一个人
日期:2000-12-31
新属性:在python中更改! < BR>< BR>< BR><溴>其他
~~~~~~~~~ < BR>
目前,metacsv只支持通过
``xarray``模块。但是,请随意建议其他功能和
贡献自己的力量! < BR>< BR>< BR>
即时转换为其他类型
——--- < BR>
特殊的转换实用程序允许您转换任何metacsv、pandas或xarray
此组中任何其他类型的容器或csv文件路径。 < BR>
所有这些转换实用程序也是metacsv容器上的方法。 < BR>
*至 < BR>
`` to_csv``允许您将任何容器或csv文件写入一个metacsv格式
csv文件。关键字参数"attrs"、"coords"和"variables"将是
在写入数据之前附加到数据。这些属性中的任何冲突
将使用此函数的参数更新 < BR>
代码块::python < BR>
>;>>导入熊猫作为PD,numpy作为NP,xarray作为XR,metacsv
>;>;df=pd.dataframe(np.random.random((3,4)),columns=list('abcd'))
>;>df
a b c d
0.558083 0.665184 0.226173 0.339905
1 0.541712 0.835804 0.326078 0.179103
2 0.332869 0.435573 0.904612 0.823884 < BR>
>;>metacsv.to_csv(df,'mycsv.csv',attrs={author':'my name','date':'2015-12-31'})
>;>;
>>df2=metacsv.read_csv('mycsv.csv',index_col=[0])
>;>df2
<;metacsv.core.containers.dataframe(3,4)>;
a b c d
0.558083 0.665184 0.226173 0.339905
1 0.541712 0.835804 0.326078 0.179103
2 0.332869 0.435573 0.904612 0.823884 < BR>
属性
作者:我的名字
日期:2015-12-31
新属性:在python中更改! < BR>
>;>metacsv.to_csv(df2,'mycsv.csv',attrs={author':'new name'})
>;>;
>;>metacsv.read_csv('mycsv.csv',index_col=[0])
<;metacsv.core.containers.dataframe(3,4)>;
a b c d
0.558083 0.665184 0.226173 0.339905
1 0.541712 0.835804 0.326078 0.179103
2 0.332869 0.435573 0.904612 0.823884 < BR>
属性
作者:新名字
日期:2015-12-31
新属性:在python中更改! < BR>
*收件人 < BR>
`` to_header``允许您将特殊属性直接写入
metacsv格式的头文件。特殊属性可以是单独的
从metacsv容器中指定或获取。的"header\u file"参数
"read_csv"和"to_csv"都允许创建特殊的头文件
它允许您在
需要。 < BR>
例如,假设有一个表可以读入熊猫 < BR>
代码块::python < BR>
>>gt;将MetaCSV、Pandas作为PD导入
>>gt;PD.数据帧(
[['x',1,2,3],['y',4,5,6],['z',7,8,9]],列=['index','a','b','c'])。到'u csv('mycsv.csv',index=none)
>;>;metacsv.read_csv('mycsv.csv')
<;metacsv.core.containers.dataframe(3,4)>;
索引a b c
0 x 12 3个
1年4月5日6
2赫兹78 9 < BR>
可以创建并使用一个单独的头文件,然后可以将其与数据一起读入: < BR>
代码块::python < BR>
>;>metacsv.to_header('mycsv.header',attrs={author':'me'},coords='索引')
>;>metacsv.read_csv('mycsv.csv',header_file='mycsv.header')
<;metacsv.core.containers.dataframe(3,3)>;
a b c
索引
x 12 3个
Y 4 5 6年 < BR>Z 7 8 9区 < BR>
坐标
*索引(索引)对象x、y、z
属性
作者:我 < BR>< BR>
*致沙雷 < BR>
`` to-xarray``将任何容器或csv文件作为xarray容器返回。表
数据(csv文件和数据帧)将创建"xarray.dataset"对象,而
系列对象将创建"xarray.dataarray"对象。关键字参数
``attrs``````coords```和``variables``将附加到数据之前
已写入。这些属性中的任何冲突都将用参数更新
此函数。 < BR>
*到数据数组 < BR>
`` to_dataarray``将任何容器或csv文件作为``xarray.dataarray``返回。
将堆叠表格数据(csv文件和数据帧),并重新排列列
作为新的"xarray.coordinates"。关键字参数"attrs"、"coords"和
`变量'将在写入数据之前附加到数据。任何冲突
这些属性将使用此函数的参数进行更新。 < BR>
*到数据集 < BR>
`` to_dataarray``将任何容器或csv文件作为``xarray.dataarray``返回。
将堆叠表格数据(csv文件和数据帧),并重新排列列
作为新的"xarray.coordinates"。关键字参数"attrs"、"coords"和
`变量'将在写入数据之前附加到数据。任何冲突
这些属性将使用此函数的参数进行更新。 < BR>
*致熊猫 < BR>
``to`u pandas``删除特殊属性并返回普通的``series``或
``dataframe``对象。 < BR>
*到网络CDF < BR>
``到'u netcdf``首先将容器或csv文件转换为'xarray.dataset``
使用"to-u dataset"函数,然后使用
``xarray```ds.to\u netcdf``方法。 < BR>
代码块::python < BR>
>;>metacsv.to_netcdf('mycsv.csv','mycsv.nc',header_file='mycsv.header')
>;>>将xarray导入为xr
>>>xr.open_数据集('mycsv.nc')
<;xarray.dataset>;
尺寸:(索引:3)
坐标:
*索引(索引)s1'x''y''z'
数据变量:
a(索引)int64 1 4 7
b(索引)int64 2 5 8
C(索引)Int64 3 6 9
属性:
作者:我 < BR>
特殊属性
——--- < BR>
"coords"和"variables"属性是关键字,而不是简单的
传递给metacsv对象的"attrs"属性。 < BR>< BR>
变量
~~~~~~~~~~~~~ < BR>
变量是应用于特定列或数据变量的属性。在
metacsv容器,变量显示为一组单独的属性。论
转换为"xarray",这些属性被分配给特定于变量的
``attrs`: < BR>
代码块::python < BR>
>>>ds=df.to_xarray()

<;xarray.dataset>;
尺寸:(索引:4)
坐标:
*索引(索引)int64 0 1 2 3
数据变量:
区域(索引)对象"usa""usa""can""can"
国际64年(指数)2010年2011年2011年
弹出(索引)浮点64 309.3 311.7 34.0 34.3
GDP(指数)浮动64 1.36E+04 1.382E+04 1.24E+03 1.277E+03
属性:
日期:2000-12-31
作者:一个人 < BR>

<;xarray.dataarray'pop'(索引:4)>;
数组([309.311.7,34.,34.3)
坐标:
*索引(索引)int64 0 1 2 3
属性:
名称:人口
单位:百万 < BR>
请注意,目前,变量在切片操作中并不持久。 < BR>
**解析变量** < BR><>变量有一个特殊的参数"read-csv":"parse-vars"允许解析格式为"var:description[unit]`"的单行变量定义: < BR>
代码块::python < BR>
>>gt;doc=io.stringio('' < BR>
作者:一个人
日期:2000-12-31
变量:
人口:百万
国内生产总值:产品[2005年10亿美元]

地区、年份、人口、国内生产总值
美国,2010309.313599.3
美国,2011311.713817.0
加拿大,2010年,34.01240.0
加拿大,2011年,34.31276.7
'') < BR>
>;>metacsv.read_csv(doc,index_col=0,parse_vars=true)
<;metacsv.core.containers.dataframe(4,3)>;
全年国内生产总值
地区
美国2010 309.3 13599.3
美国2011 311.7 13817.0
2010年5月34日1240.0
2011年5月34.3日1276.7 < BR>
变量
国内生产总值:{u'description':'产品',u'unit':'2005年10亿美元'}
流行语:{u'description':'人口',u'unit':'百万'}
属性
日期:2000-12-31
作者:一个人 < BR>
坐标
~~~~~~~~~~~~~ < BR>
坐标的概念基础取自'xAlx',其中数据是
被视为一个ndarray而不是一张桌子。如果你打算只和
熊猫喜欢"metacsv"的特性,您并不真正需要坐标。 < BR>
也就是说,在csv中指定"coords"属性将导致
索引处理: < BR>
代码块::python < BR>
>>gt;doc=io.stringio('' < BR>
作者:一个人
日期:2000-12-31
变量:
弹出:
名称:人口
单位:百万
国内生产总值:
名称:产品
单位:2005亿美元
咕哝:
-地区
-年份

地区、年份、人口、国内生产总值
美国,2010309.313599.3
美国,2011311.713817.0
加拿大,2010年,34.01240.0
加拿大,2011年,34.31276.7
'') < BR>
>>>df=metacsv.read_csv(文档)
>;>df
<;metacsv.core.containers.dataframe(4,2)>;
国内生产总值
地区年份
美国2010 309.3 13599.3
2011年311.7 13817.0
2010年5月34日1240.0
2011年34.3 1276.7 < BR>
坐标
*区域(区域)对象可以,美国
*国际64年2010年、2011年
变量
gdp:ordereddict([("name","product"),("unit","2005$bn"))
pop:ordereddict([("name","population"),("unit","millions"))
属性
日期:2000-12-31
作者:一个人 < BR>< BR>
但是,当移动到"xarray"对象时,坐标变得特别有用
或"netcdf"文件。上面的"dataframe"不会有问题,因为"region"``
和"年份"是正交的: < BR>
代码块::python < BR>

<;xarray.dataset>;
尺寸:(地区:2,年份:2)
坐标:
*区域(区域)对象"usa"可以
*国际64年(年)2011
数据变量:
POP(地区,年份)浮动64 309.3 311.7 34.0 34.3
GDP(地区、年份)浮动64 1.36E+04 1.382E+04 1.24E+03 1.277E+03
属性:
日期:2000-12-31
作者:一个人 < BR>
当索引中的列不独立并且
不能认为是正交的。在这种情况下,可以将"coords"指定为
csv头中的类似dict的属性,或作为
转换方法: < BR>
代码块::python < BR>
doc=io.stringio('''< BR>
咕哝:
地区:
regname:'区域'
大陆:"地区"
年份:

地区、regname、大陆、年份、pop、gdp
美国,美国,北美,2010309.313599.3
美国,美国,北美,2011311.713817.0
加拿大,北美,2010年,34.01240.0
加拿大,北美,2011年,34.31276.7
'') < BR>
>>>元空间到阵列(文档)
<;xarray.dataset>;
尺寸:(地区:2,年份:2)
坐标:
*区域(区域)对象"usa"可以
*国际64年(年)2011
regname(region)对象"美国""加拿大"
大陆(地区)对象"北美""北美"
数据变量:
POP(地区,年份)浮动64 309.3 311.7 34.0 34.3
GDP(地区、年份)浮动64 1.36E+04 1.382E+04 1.24E+03 1.277E+03 < BR>
请注意,结果"dataset"不是由
所有四个坐标,但仅由由``*``表示的基坐标表示。
如果不首先这样设置"coords"属性,则生成的数据
将具有与``(美国、加拿大)``对应的``nan``值
``(加拿大,美国)``。 < BR>< BR> 待办事项
============ < BR>
*允许"xarray.dataset"和"xarray.dataarray"的自动混合``
对象到元SV容器。 < BR>
*将metacsv功能扩展到"panel"对象 < BR>
*使"coords"和"attrs"在切片操作中持久化
(尝试上面的示例中的"df['pop].to_xarray()``并观看
失败…) < BR>
*改进"pandas"和"metacsv"之间的挂钩: < BR>
-更新"df.index.names"赋值中的"coord"名称
-在堆栈/取消堆栈上更新"coords"
-更新上的"coords" < BR>
*改进语法分析器以自动去除尾随逗号和其他excel遗物 < BR>
*启用"read-csv(engine="c")"…这目前不起作用。 < BR>
*按坐标/变量名索引的句柄属性-->;分配给
坐标/变量特定``attrs`` < BR>
*让我们启动问题跟踪程序并删除此部分! < BR>
*我们是否应该重新考虑"特殊属性",例如命名为Coords?也许这些应该
包含在
避免与其他通用属性混淆… < BR>
*允许在"read-csv"调用中使用属性断言(例如"version=>;1.6.0"`) < BR>
*提高测试覆盖率 < BR>
*改进文档并构建"已读文档"页 < BR>< BR>< BR>
功能请求
==================
*为``multi csv``-->;``panel``创建语法或使用文件名组合 正则表达式
*最终?允许使用
达斯克/沙雷
*最终?添加XML、SQL和其他结构化语法语言转换 < BR>< BR>
_ bsd:http://opensource.org/licenses/bsd-3-clause
_文档:http://metacsv.readthedocs.org/en/latest/
_ API:http://metacsv.readthedocs.org/en/latest/api.html < BR>< BR>
=========
更改日志
========= < BR>
在这里您可以找到最近对metacsv的更改。 < BR>
版本开发
----- < BR>
正在发布 < BR>
更新了更改。 < BR>< BR>
版本0.0.1
---- < BR>
发布日期:2016-05-04 < BR>
pypi上的第一个版本。

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

推荐PyPI第三方库


热门话题
java连接在一个屏幕上成功下载,在第二个屏幕上用几乎相同的代码获得错误   java调用super。超级的方法,跳过超级。方法   使用Web服务连接到sharepoint 2013的Java应用程序   java我无法正确呈现editText   httpurlconnection如何在java中检查url连接状态   java Spring Security可以为同一用户接受多个密码吗?   java如何在PreparedStatement中使用自动生成的@Id?   java每个数组表示一个位模式   java我不确定如何记录鼠标在某个区域被点击的次数   spring如何解决:java。lang.NoSuchMethodError:javax。坚持不懈实体管理器。createStoredProcedureQuery(Ljava/lang/String;)   java如何为blackberry中listfield项内的不同字段触发事件   安卓使用Proguard混淆java代码   java在grails 2中与多个数据源有一个和一个域关联。十、   java在尝试在单击按钮时返回combobox值时一直出错   java我可以在setter中使用@Resource注释而不是字段吗?   java Eclipse调试步进不工作   java比较相同对象的两个表并选择不同的表