javaee论坛

普通会员

225648

帖子

335

回复

349

积分

楼主
发表于 2019-11-07 13:26:33 | 查看: 89 | 回复: 1

虽然很早就接触过pandas模块,却因为深度依赖numpy的原因,从没有认真对待它。今天无意中发现,pandas最初是作为金融数据分析工具而开发出来,有些概念借鉴了R语言。我距离金融圈非常遥远,难怪以前一直找不到使用它的必要性。现在我知道,pandas为时间序列分析提供了很好的支持,这一点也许可以给我的工作提供方便。

模块学习的第一步,自然是安装。必须要感谢pip,自从py2.7.9内置pip之后,世界变得如此美好!

pipinstallpandas导入,测试一下模块是否可用。

importpandasaspd2.数据结构网上检索了一下(还是没有认真去读pandas的document),pandas大致有以下几个核心的数据结构:

(1)Series

Series可以理解为一维数组,数组元素可以是不同的类型,甚至是对象——类似python的list对象。不过,Series可以自行定义索引,从这个角度看,又类似python的dict对象。

a=pd.Series()b=pd.Series([2,5,8])c=pd.Series([3,'x',b])d=pd.Series({'name':'xufive','age':50})

Series的方法令人眼花缭乱,简单尝试了一下add,原以为是插入新的元素,结果却是对每一个元素做add,这和numpy.array的广播函数是完全一样的。

>>>b=pd.Series([2,5,8])>>>b021528dtype:int64>>>b=b.add(8)>>>b010113216dtype:int64>>>b=b.mod(3)>>>b011121dtype:int64阿斯顿

Series有index,values,name,index.name等属性,例如:

>>>b=pd.Series([2,5,8])>>>b.valuesarray([2,5,8],dtype=int64)>>>b.indexRangeIndex(start=0,stop=3,step=1)(2)DataFrame

DataFrame的概念来自于R语言,可视作为Series的容器(container)。DataFrame是表格型数据,既有行索引又有列索引,每列数据可以为不同类型数据(数值、字符串、布尔型值)。

>>>importnumpyasnp>>>importpandasaspd>>>pd.DataFrame({'a':[1,2],'b':[2,3],'c':[3,4],'d':[4,5]})abcd0123412345>>>pd.DataFrame(np.array([[1,2,3,4],[3,4,5,6]]),index=['one','two'])0123one1234two3456>>>pd.DataFrame([pd.Series([11,12,13,14]),pd.Series([21,22,23,24])])0123011121314121222324DataFrame对象同样有一堆方法来实现分割、查找、替换、转换等功能。在我学习这些细节的时候,深深加剧了我对于R语言的恐惧。为了不给各位看官留下心理阴影,这里就不详细描述了。如有兴趣深入研究,请参考《pandas数据结构》。

3.时间序列前言中提到,pandas为时间序列分析提供了很好的支持,那么,我们如何构建一个时间序列的数据结构呢?

>>>index=pd.date_range('1/10/2018',periods=5)>>>pd.DataFrame(np.random.randn(5,3),index=index,columns=list('ABC'))ABC2018-01-10-1.631258-0.5683790.3192822018-01-11-0.7080941.1071511.3642872018-01-120.649978-0.4944781.0762872018-01-130.079650-1.6347350.7946552018-01-140.3301340.8905590.735603


普通会员

0

帖子

315

回复

336

积分
沙发
发表于 2024-03-27 10:15:43

看看

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017