1.Series
生成一维数组,左边索引,右边值:
In [3]: obj = Series([1,2,3,4,5])
In [4]: obj
Out[4]:
0 1
1 2
2 3
3 4
4 5
dtype: int64
In [5]: obj.values
Out[5]: array([1, 2, 3, 4, 5], dtype=int64)
In [6]: obj.index
Out[6]: RangeIndex(start=0, stop=5, step=1)

创建对各个数据点进行标记的索引:

In [7]: obj2 = Series([4,1,9,7], index=["a","c","e","ff"])
In [8]: obj2
Out[8]:
a 4
c 1
e 9
ff 7
dtype: int64
In [9]: obj2.index
Out[9]: Index(['a', 'c', 'e', 'ff'], dtype='object')

取一个值或一组值:

In [10]: obj2["c"]
Out[10]: 1
In [11]: obj2[["c","e"]]
Out[11]:
c 1
e 9
dtype: int64

数组运算,会显示索引:

In []: obj2[obj2>]
Out[]:
a
e
ff
dtype: int64
Series还可以看作有序的字典,很多字典操作可以使用:
In [13]: "c" in obj2
Out[13]: True
直接用字典创建Series:
In [14]: data = {"name":"liu","year":18,"sex":"man"}
In [15]: obj3 = Series(data)
In [16]: obj3
Out[16]:
name liu
year 18
sex man
dtype: object
用字典结合列表创建Series:
In [17]: list1 = ["name","year","mobile"]
In [18]: obj4 = Series(data,index=list1)
In [19]: obj4
Out[19]:
name liu
year 18
mobile NaN
dtype: object

PS:因为data字典中没有mobile所以值为NaN

 
检测数据是否缺失:
In [20]: pd.isnull(obj4)
Out[20]:
name False
year False
mobile True
dtype: bool In [21]: pd.notnull(obj4)
Out[21]:
name True
year True
mobile False
dtype: bool In [22]: obj4.isnull()
Out[22]:
name False
year False
mobile True
dtype: bool In [23]: obj4.notnull()
Out[23]:
name True
year True
mobile False
dtype: bool
Series的name属性:
In [7]: obj4.name = "hahaha"
In [8]: obj4.index.name = "state"
In [9]: obj4
Out[9]:
state
name liu
year 18
mobile NaN
Name: hahaha, dtype: object
2.DataFrame
构建DataFrame
In [13]: data = {
"state":[1,1,2,1,1],
"year":[2000,2001,2002,2004,2005],
"pop":[1.5,1.7,3.6,2.4,2.9]
}
In [14]: frame = DataFrame(data)
In [15]: frame
Out[15]:
state year pop
0 1 2000 1.5
1 1 2001 1.7
2 2 2002 3.6
3 1 2004 2.4
4 1 2005 2.9
设定行与列的名称,如果数据找不到则产生NA值:
In [18]: frame2 = DataFrame(
data,
columns=["year","state","pop","debt"],
index=["one","two","three","four","five"]
)
In [19]: frame2
Out[19]:
year state pop debt
one 2000 1 1.5 NaN
two 2001 1 1.7 NaN
three 2002 2 3.6 NaN
four 2004 1 2.4 NaN
five 2005 1 2.9 NaN
将DataFrame的列获取成为Series:
In [7]: frame2.year
Out[7]:
one 2000
two 2001
three 2002
four 2004
five 2005
Name: year, dtype: int64

PS:返回的索引不变,且name属性被设置了

获取行:
In [11]: frame2.loc["three"]
Out[11]:
year 2002
state 2
pop 3.6
debt NaN
Name: three, dtype: object
赋值列:
In [12]: frame2['debt'] = 16.5
In [13]: frame2
Out[13]:
year state pop debt
one 2000 1 1.5 16.5
two 2001 1 1.7 16.5
three 2002 2 3.6 16.5
four 2004 1 2.4 16.5
five 2005 1 2.9 16.5
如果赋值列表或数组,长度需要相等;如果赋值Series,则精确匹配索引
In [17]: val = Series([1.2,1.5,1.7], index=["two","four","five"])
In [18]: frame2['debt'] = val
In [19]: frame2
Out[19]:
year state pop debt
one 2000 1 1.5 NaN
two 2001 1 1.7 1.2
three 2002 2 3.6 NaN
four 2004 1 2.4 1.5
five 2005 1 2.9 1.7
如果列不存在,则创建:
In [21]: frame2["eastern"] = frame2.state == 1
In [22]: frame2
Out[22]:
year state pop debt eastern
one 2000 1 1.5 NaN True
two 2001 1 1.7 1.2 True
three 2002 2 3.6 NaN False
four 2004 1 2.4 1.5 True
five 2005 1 2.9 1.7 True
对于嵌套字典,DataFrame会解释为外层为列,内层为行索引:
In [23]: dic = {"name":{"one":"liu","two":"rui"},"year":{"one":"","two":""}}
In [24]: frame3 = DataFrame(dic)
In [25]: frame3
Out[25]:
name year
one liu 23
two rui 22
显示行,列名:
In [26]: frame3.index.name = "index"
In [27]: frame3.columns.name = "state"
In [28]: frame3
Out[28]:
state name year
index
one liu 23
two rui 22
返回二维ndarray形式的数据:
In [29]: frame3.values
Out[29]:
array([['liu', ''],
['rui', '']], dtype=object)
3.索引对象

In [30]: obj = Series(range(3),index=["a","b","c"])
In [31]: index = obj.index
In [32]: index
Out[32]: Index(['a', 'b', 'c'], dtype='object')
index对象不可修改的,使得index在多个数据结构中可以共享
In [35]: index = pd.Index(np.arange(3))
In [36]: obj2 = Series([1.5,0.5,2],index=index)
In [37]: obj2.index is index
Out[37]: True

pandas知识点(数据结构)的更多相关文章

  1. 机器学习-Pandas 知识点汇总(吐血整理)

    Pandas是一款适用很广的数据处理的组件,如果将来从事机械学习或者数据分析方面的工作,咱们估计70%的时间都是在跟这个框架打交道.那大家可能就有疑问了,心想这个破玩意儿值得花70%的时间吗?咱不是还 ...

  2. Pandas 的数据结构

    Pandas的数据结构 导入pandas: 三剑客 from pandas import Series,DataFrame import pandas as pd import numpy as np ...

  3. pandas的数据结构之series

    Pandas的数据结构 1.Series Series是一种类似于一维数组的对象,由下面两个部分组成: index:相关的数据索引标签 values:一组数据(ndarray类型) series的创建 ...

  4. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  5. Pandas的使用(3)---Pandas的数据结构

    Pandas的使用(3) Pandas的数据结构 1.Series 2.DataFrame

  6. Pandas之数据结构

    pandas入门 由于最近公司要求做数据分析,pandas每天必用,只能先跳过numpy的学习,先学习大Pandas库 Pandas是基于Numpy构建的,让以Numpy为中心的应用变得更加简单 pa ...

  7. Python数据分析--Pandas知识点(二)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...

  8. pandas知识点脑图汇总

    参考文献: [1]Pandas知识点脑图汇总

  9. pandas中数据结构-Series

    pandas中数据结构-Series pandas简介 Pandas是一个开源的,BSD许可的Python库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具.Python与Pan ...

随机推荐

  1. mac-profile

    Mac 中定义与Linux一样的profile.d 首先Mac是没有profile.d的 在/etc/profile文件中添加 for sh in /etc/profile.d/*sh; do [ - ...

  2. JAVA爬虫---验证码识别技术(一)

    Python中有专门的图像处理技术比如说PIL,可以对验证码一类的图片进行二值化处理,然后对图片进行分割,进行像素点比较得到图片中的数字.这种方案对验证码的处理相对较少,运用相对普遍,很多验证码图片可 ...

  3. Catch the moments of your life. Catch them while you're young and quick.

    Catch the moments of your life. Catch them while you're young and quick.趁你还年轻利落,把握住生活中的美好瞬间吧!

  4. 返回mapcontrol上的已被选择的element

     IGraphicsContainerSelect.SelectedElement

  5. Android rxjava2的disposable

    rxjava+retrofit处理网络请求 在使用rxjava+retrofit处理网络请求的时候,一般会采用对观察者进行封装,实现代码复用和拓展.可以参考我的这篇文章:rxjava2+retrofi ...

  6. Spring mvc + maven + tomcat配置问题

    在用maven搭建spring mvc时候, 个人遇到过很多的问题, 现在把遇到的问题总结下: 1.  首先点击项目->Run As->Maven clean, 这一步把之前不管有没有ma ...

  7. [转]C#中StreamReader读取中文出现乱码

    摘自:C#中StreamReader读取中文出现乱码 原因是自Windows 2000之后的操作系统在文件处理时默认编码采用Unicode所以.NET文件的默认编码也是Unicode.除非另外指定,S ...

  8. A011 Activiti工作流程开发的一些统一规则和实现原理(完整版)

    注意:以下规则是我为了规范流程的处理过程,不是Activiti公司的官方规定. 1.流程启动需要设置启动者,在Demo程序中,“启动者变量”名统一设置为initUserId 启动时要做的: ident ...

  9. ubuntu16.04解决屏幕适应问题

    打开ubuntu登录进去后,输入: sudo  apt-get installopen-vm-tools sudo apt-get install open-vm* 然后重启(reboot),即可解决 ...

  10. 您H1B身份的申请或H1B延期的申请提交对地方了吗?

    由于H1B配额的短缺,任何关于移民局对H1B申请的改动对马上要申请H1B的外国学生或专业人士来说都很重要.美国移民局在2007年3月5号发布了关于更改接收H1B身份申请或H1B延期申请的新政策. 申请 ...