一、  Pandas简介

1、Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

2、Pandas 是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型。

3、数据结构:

Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。

Time- Series:以时间为索引的Series。

DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。

Panel :三维的数组,可以理解为DataFrame的容器。

Pandas 有两种自己独有的基本数据结构。读者应该注意的是,它固然有着两种数据结构,因为它依然是 Python 的一个库,所以,Python 中有的数据类型在这里依然适用,也同样还可以使用类自己定义数据类型。只不过,Pandas 里面又定义了两种数据类型:Series 和 DataFrame,它们让数据操作更简单了。

二、  Pandas安装

因为pandas是python的第三方库所以使用前需要安装一下,直接使用pip install pandas 就会自动安装pandas以及相关组件。

三、  Pandas使用

注:本次操作是在ipython中进行

1、导入pandas模块并使用别名,以及导入Series模块,以下使用基于本次导入。

In [1]: from pandas import Series

In [2]: import pandas as pd

2、Series

Series 就如同列表一样,一系列数据,每个数据对应一个索引值。

Series 就是“竖起来”的 list:

In [3]: s = Series([1,4,'ww','tt'])

In [4]: s Out[4]: 0   1 1   4 2   ww 3   tt dtype: object

另外一点也很像列表,就是里面的元素的类型,由你任意决定(其实是由需要来决定)。

这里,我们实质上创建了一个 Series 对象,这个对象当然就有其属性和方法了。比如,下面的两个属性依次可以显示 Series 对象的数据值和索引:

In [5]: s.index Out[5]: RangeIndex(start=0, stop=4, step=1)

In [8]: s.values Out[8]: array([1, 4, 'ww', 'tt'], dtype=object)

列表的索引只能是从 0 开始的整数,Series 数据类型在默认情况下,其索引也是如此。不过,区别于列表的是,Series 可以自定义索引:

In [9]: s2 = Series(['wangxing','man',24],index=['name','sex','age'])

In [10]: s2 Out[10]: name    wangxing sex       man age      24 dtype: object

每个元素都有了索引,就可以根据索引操作元素了。还记得 list 中的操作吗?Series 中,也有类似的操作。先看简单的,根据索引查看其值和修改其值:

In [12]: s2['name'] Out[12]: 'wangxing'

In [45]: s2['name'] = 'wudadiao'

In [46]: s2 Out[46]: name    wudadiao sex    man age   24 dtype: object

这是不是又有点类似 dict 数据了呢?的确如此。看下面就理解了。

读者是否注意到,前面定义 Series 对象的时候,用的是列表,即 Series() 方法的参数中,第一个列表就是其数据值,如果需要定义 index,放在后面,依然是一个列表。除了这种方法之外,还可以用下面的方法定义 Series 对象:

In [13]: sd = {'python':9000,'c++':9001,'c#':9000}

In [14]: s3 = Series(sd)

In [15]: s3 Out[15]: c#    9000 c++    9001 python   9000 dtype: int64

现在是否理解为什么前面那个类似 dict 了?因为本来就是可以这样定义的。

这时候,索引依然可以自定义。Pandas 的优势在这里体现出来,如果自定义了索引,自定的索引会自动寻找原来的索引,如果一样的,就取原来索引对应的值,这个可以简称为“自动对齐”。

In [16]: s4 = Series(sd,index=['java','c++','c#'])

In [17]: s4 Out[17]: java    NaN c++    9001.0 c#    9000.0 dtype: float64

在 Pandas 中,如果没有值,都对齐赋给 NaN。

Pandas 有专门的方法来判断值是否为空。

In [19]: pd.isnull(s4) Out[19]: java    True c++   False c#    False dtype: bool

此外,Series 对象也有同样的方法:

In [20]: s4.isnull() Out[20]: java    True c++   False c#    False dtype: bool

其实,对索引的名字,是可以从新定义的:

In [21]: s4.index = ['语文','数学','English']

In [22]: s4 Out[22]: 语文    NaN 数学   9001.0 English    9000.0 dtype: float64

对于 Series 数据,也可以做类似下面的运算(关于运算,后面还要详细介绍):

In [23]: s4 * 2 Out[23]: 语文    NaN 数学    18002.0 English    18000.0 dtype: float64

In [24]: s4[s4 > 9000] Out[24]: 数学 9001.0 dtype: float64

Series就先简要写到这,下面看pandas的另一种数据结构DataFrame.

DataFrame

DataFrame 是一种二维的数据结构,非常接近于电子表格或者类似 mysql 数据库的形式。它的竖行称之为 columns,横行跟前面的 Series 一样,称之为 index,也就是说可以通过 columns 和 index 来确定一个主句的位置。

首先来导入模块

In [27]: from pandas import Series,DataFrame

In [26]: data = {"name":['google','baidu','yahoo'],"marks":[100,200,300],"price":[1,2,3]}

In [28]: f1 = DataFrame(data)

In [29]: f1 Out[29]:   marks   name    price 0    100    google    1 1    200    baidu    2 2   300    yahoo    3

这是定义一个 DataFrame 对象的常用方法——使用 dict 定义。字典的“键”("name","marks","price")就是 DataFrame 的 columns 的值(名称),字典中每个“键”的“值”是一个列表,它们就是那一竖列中的具体填充数据。上面的定义中没有确定索引,所以,按照惯例(Series 中已经形成的惯例)就是从 0 开始的整数。从上面的结果中很明显表示出来,这就是一个二维的数据结构(类似 excel 或者 mysql 中的查看效果)。

上面的数据显示中,columns 的顺序没有规定,就如同字典中键的顺序一样,但是在 DataFrame 中,columns 跟字典键相比,有一个明显不同,就是其顺序可以被规定,向下面这样做:

In [31]: f2 = DataFrame(data,columns=['name','price','marks'])

In [32]: f2 Out[32]:   name    price    marks 0  google   1        100 1  baidu    2         200 2  yahoo   3         300

跟 Series 类似的,DataFrame 数据的索引也能够自定义

In [35]: f3 = DataFrame(data,columns=['name','marks','price'],index=['a','b','c'])

In [36]: f3 Out[36]:   name    marks    price a   google      100        1 b     baidu          200       2 c     yahoo         300            3

定义 DataFrame 的方法,除了上面的之外,还可以使用“字典套字典”的方式。

In [40]: newdata = {'lang':{'first':'python','second':'java'},'price':{'first':5000,'second':2000}}

In [41]: f4 = DataFrame(newdata)

In [42]: f4 Out[42]:     lang    price first   python   5000 second   java    2000

在字典中就规定好数列名称(第一层键)和每横行索引(第二层字典键)以及对应的数据(第二层字典值),也就是在字典中规定好了每个数据格子中的数据,没有规定的都是空。

DataFrame 对象的 columns 属性,能够显示素有的 columns 名称。并且,还能用下面类似字典的方式,得到某竖列的全部内容(当然包含索引):

>>> newdata = {"lang":{"firstline":"python","secondline":"java"}, "price":{"firstline":8000}}

>>> f4 = DataFrame(newdata)

>>> f4

lang     price

firstline     python   8000

secondline    java     NaN

>>> DataFrame(newdata, index=["firstline","secondline","thirdline"])

lang     price

firstline     python   8000

secondline    java     NaN

thirdline     NaN      NaN

DataFrame 对象的 columns 属性,能够显示素有的 columns 名称。并且,还能用下面类似字典的方式,得到某竖列的全部内容(当然包含索引):

In [44]: f3['name'] Out[44]: a google b baidu c yahoo Name: name, dtype: object

下面操作是给同一列赋值

newdata1 = {'username':{'first':'wangxing','second':'dadiao'},'age':{'first':24,'second':25}}

In [67]: f6 = DataFrame(newdata1,columns=['username','age','sex'])

In [68]: f6 Out[68]:   username    age    sex first wangxing    24    NaN second dadiao   25    NaN

In [69]: f6['sex'] = 'man'

In [70]: f6 Out[70]:   username  age    sex first wangxing   24    man second dadiao   25    man

也可以单独的赋值,除了能够统一赋值之外,还能够“点对点”添加数值,结合前面的 Series,既然 DataFrame 对象的每竖列都是一个 Series 对象,那么可以先定义一个 Series 对象,然后把它放到 DataFrame 对象中。如下:

ssex = Series(['男','女'],index=['first','second'])

In [72]: f6['sex'] = ssex

In [73]: f6 Out[73]:   username    age   sex first wangxing     24      男 second dadiao    25    女

还可以更精准的修改数据吗?当然可以,完全仿照字典的操作:

In [74]: f6['age']['second'] = 30

In [75]: f6 Out[75]:   username    age    sex first wangxing    24          男 second dadiao   30     女

参考http://wiki.jikexueyuan.com/project/start-learning-python/312.html所整理。

python 熊猫_python之pandas简单介绍及使用(一)相关推荐

  1. python利器怎么编程-bluepy 一款python封装的BLE利器简单介绍

    1.bluepy 简介 bluepy 是github上一个很好的蓝牙开源项目,其地址在 LINK-1, 其主要功能是用python实现linux上BLE的接口. This is a project t ...

  2. php有lambda表达式吗,Python中lambda表达式的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Python中lambda表达式的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一:匿名函数的定义 lambda parameter ...

  3. python测试驱动开发_使用Python进行测试驱动开发的简单介绍

    python测试驱动开发 by Dmitry Rastorguev 德米特里·拉斯托格夫(Dmitry Rastorguev) 使用Python进行测试驱动开发的简单介绍 (A simple intr ...

  4. python简单的聚类分析代码_python kmeans聚类简单介绍和实现代码

    一.k均值聚类的简单介绍 假设样本分为c类,每个类均存在一个中心点,通过随机生成c个中心点进行迭代,计算每个样本点到类中心的距离(可以自定义.常用的是欧式距离) 将该样本点归入到最短距离所在的类,重新 ...

  5. Python, CPython, Pypy, Jython的简单介绍

    简单地说,Python是一门编程语言,任何一种编程语言都需要用另一种语言来实现它,比如C语言就是用机器语言来实现的.所以,Python根据实现方式不同分为了CPyhton.Pypy.Jython等. ...

  6. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  7. python使用教程pandas-python之pandas简单介绍及使用(一)

    In [24]: s4[s4 > 9000] Out[24]: 数学 9001.0 dtype: float64 Series就先简要写到这,下面看pandas的另一种数据结构DataFrame ...

  8. python打开excel窗口_简单介绍python在CMD界面读取excel所有数据

    这篇文章主要介绍了python在CMD界面读取excel所有数据,帮助大家更好的利用python办公,感兴趣的朋友可以了解下 代码 import xlrd import os from prettyt ...

  9. python推荐_Python中一个简单的基于内容的推荐引擎

    假设,我们需要为一个电子商务网站建立一个推荐引擎. 基本上,你有两种方法:基于内容和协同过滤.我们将看看每种方法的优缺点,然后深入一个基于内容的引擎的一个简单的实现(准备在Heroku之上部署!). ...

最新文章

  1. nutz 结合QueryResult,Record 自定义分页查询,不构建pojo 整合
  2. Android SDK安装找不到JDK
  3. mysql数据库更新表_Mysql数据库(四)表记录的更新操作
  4. mac 设置mysql开机自启动
  5. Linux Ubuntu终端“@”前后的含义及修改(修改用户名及主机名)【试用办法,部分不可行】
  6. simpla是基于laravel5的php,一个基于laravel5.1的后台
  7. 追赶法求解三对角线性方程组的MATLAB程序
  8. 小写数字转大写_微软太坏了,这个函数居然被隐藏了,用它搞定数值转中文大小写...
  9. 微信小程序上线问题与经验总结
  10. C语言面试题 - 结构体对齐
  11. 以太网电缆行业调研报告 - 市场现状分析与发展前景预测
  12. 北大计算机就业报告,北京大学信息科学技术学院解读和毕业生就业统计
  13. 文学赏析 - 人生若只如初见
  14. 平板触控笔哪些品牌好?ipad触控笔推荐平价
  15. Kali Linux 安装教程和使用技巧
  16. 配置微信小程序开发分享朋友圈功能
  17. Error:代理服务器拒绝链接
  18. 电脑打开telnet功能
  19. 权威公布岑巩马家寨为一代佳人陈圆圆归隐地
  20. 武汉长江大桥(游走武汉)

热门文章

  1. 指针的动态初始化malloc与销毁free
  2. 8086汇编与c++编译器就内存方面的感想
  3. 64位系统使用Access 数据库文件的彻底解决方法
  4. C#自定义ConfigSections节 操作 。
  5. IOS15之JSON的解析字典转模型
  6. 微信小程序 筛选侧边栏 全选与反全选
  7. c语言程序输入n个数字排序,输入n个数字然后进行排序,用C语言编写。注意是n个数啊,不是确定的个数。...
  8. python appium自动化测试框架unittest_Appium基于Python unittest自动化测试 自动化测试框架 -- PO并生成html测试报告...
  9. java打印整个向量_Java中Vector向量的用法
  10. git 修改本地用户名_git简单介绍