pandas入门

来源:互联网 发布:加拿大北电网络市值 编辑:程序博客网 时间:2024/06/05 03:08

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

from pandas import Series, DataFrameimport 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 obj2Out: TrueIn: 'e' in obj2Out: FalseIn: sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}Out: obj3 = Series(sdata)In: obj3Out: 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]: obj3Out[127]: stateOhio      35000Oregon    16000Texas     71000Utah       5000Name: 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]: frameOut[130]:    pop   state  year0  1.5    Ohio  20001  1.7    Ohio  20012  3.6    Ohio  20023  2.4  Nevada  20014  2.9  Nevada  2002
  • 如果制定了列序列,DataFrame的列会按照指定顺序排列;如果传入的列在数据中找不到,产生NaN值:
In [132]: DataFrame(data, columns = ['year', 'state', 'pop'])Out[132]:    year   state  pop0  2000    Ohio  1.51  2001    Ohio  1.72  2002    Ohio  3.63  2001  Nevada  2.44  2002  Nevada  2.9In [133]: frame2 = DataFrame(data, columns = ['year', 'state', 'pop', 'debt'], index=['one', 'two', 'three', 'four', 'five'])In [134]: frame2Out[134]:        year   state  pop debtone    2000    Ohio  1.5  NaNtwo    2001    Ohio  1.7  NaNthree  2002    Ohio  3.6  NaNfour   2001  Nevada  2.4  NaNfive   2002  Nevada  2.9  NaN
  • 通过类似字典标记的方式或属性方式,将DataFrame的列获取为一个Series:
In [135]: frame2['state']Out[135]: one        Ohiotwo        Ohiothree      Ohiofour     Nevadafive     NevadaName: state, dtype: objectIn [136]: frame2.yearOut[136]: one      2000two      2001three    2002four     2001five     2002Name: year, dtype: int64
  • 通过位置或名称获取行信息,如用索引字段ix(anaconda3 用loc)
In [138]: frame2.loc['three']Out[138]: year     2002state    Ohiopop       3.6debt      NaNName: 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]: frame3Out[141]:       Nevada  Ohio2000     NaN   1.52001     2.4   1.72002     2.9   3.6

DataFrame方法与属性

索引对象

  • 索引对象是不可修改,这样才能是index对象在多个数据结构间安全共享。
原创粉丝点击