pandas入门

pandas含使得数据分析工作变得更快更简洁的高级数据结构和操作工具,基于NumPy构建。pandas的引入约定:(因为Series和DataFrame使用次数多,将其引入本地命名空间)

from pandas import Series, DataFrame
import pandas as pd

pandas 数据结构

Series

Series是一种类似于以为数组的对象,由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(索引)组成,可以通过Series的values和index获取其数组表示形式和索引对象。

  • 可以为数据指定索引,通过索引的方式选取Series中的单个或一组值

  • NumPy数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接

In: obj2 = Series([4, 7, -5, 3], index=['d','b','a','c'])
In: obj2[obj2 > 0]
Out: d  6
     b  7
     c  3
  • 可以将Series看成一个定长的有序字典
In: 'b' in obj2
Out: True
In: 'e' in obj2
Out: False
In: sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
Out: obj3 = Series(sdata)
In: obj3
Out: Ohio       35000
     Oregon     16000
     Texas      71000
     Utah        5000
  • 使用missing或NA表示缺失数据,isnull和notnull函数可用于检测缺失数据:
pd.isnull(obj4); pd.notnull(obj4)
obj4.isnull()
  • 在算术运算中自动对齐不同索引的数据

  • Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切

In [125]: obj3.name = 'population'

In [126]: obj3.index.name = 'state'

In [127]: obj3
Out[127]: 
state
Ohio      35000
Oregon    16000
Texas     71000
Utah       5000
Name: population, dtype: int64
  • Series索引可以通过赋值就地修改

Series方法及属性

DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型。DataFrame既有行索引也有列索引。

  • 构建DataFrame最常用的方法是直接传入一个由等长列表或numpy数组组成的字典
In [128]: data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
     ...: 'year': [2000, 2001, 2002, 2001, 2002],
     ...: 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}

In [129]: frame = DataFrame(data)

In [130]: frame
Out[130]: 
   pop   state  year
0  1.5    Ohio  2000
1  1.7    Ohio  2001
2  3.6    Ohio  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002
  • 如果制定了列序列,DataFrame的列会按照指定顺序排列;如果传入的列在数据中找不到,产生NaN值:
In [132]: DataFrame(data, columns = ['year', 'state', 'pop'])
Out[132]: 
   year   state  pop
0  2000    Ohio  1.5
1  2001    Ohio  1.7
2  2002    Ohio  3.6
3  2001  Nevada  2.4
4  2002  Nevada  2.9

In [133]: frame2 = DataFrame(data, columns = ['year', 'state', 'pop', 'debt'], index=['one', 'two', 'three', 'four', 'five'])

In [134]: frame2
Out[134]: 
       year   state  pop debt
one    2000    Ohio  1.5  NaN
two    2001    Ohio  1.7  NaN
three  2002    Ohio  3.6  NaN
four   2001  Nevada  2.4  NaN
five   2002  Nevada  2.9  NaN
  • 通过类似字典标记的方式或属性方式,将DataFrame的列获取为一个Series:
In [135]: frame2['state']
Out[135]: 
one        Ohio
two        Ohio
three      Ohio
four     Nevada
five     Nevada
Name: state, dtype: object

In [136]: frame2.year
Out[136]: 
one      2000
two      2001
three    2002
four     2001
five     2002
Name: year, dtype: int64
  • 通过位置或名称获取行信息,如用索引字段ix(anaconda3 用loc)
In [138]: frame2.loc['three']
Out[138]: 
year     2002
state    Ohio
pop       3.6
debt      NaN
Name: three, dtype: object
  • 赋值给列:将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值。为不存在的列赋值会创建出一个新列。

  • 传入嵌套字典(字典的字典):外层字典的键作为列,内层键则作为行索引。

In [139]: pop = {'Nevada': {2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}

In [140]: frame3 = DataFrame(pop)

In [141]: frame3
Out[141]: 
      Nevada  Ohio
2000     NaN   1.5
2001     2.4   1.7
2002     2.9   3.6

DataFrame方法与属性

索引对象

  • 索引对象是不可修改,这样才能是index对象在多个数据结构间安全共享。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值