首页 > 编程语言 > 详细

Python 学习 第十二篇:pandas

时间:2019-04-05 15:48:55      阅读:177      评论:0      收藏:0      [点我收藏+]

pandas是基于NumPy构建的模块,含有使数据分析更快更简单的操作工具和数据结构,最常用的数据结构是:序列Series和数据框DataFrame,Series类似于numpy中的一维数组,类似于关系表的一列;而DataFrame类似于二维的关系表。

>>> import pandas as pd
>>> from pandas import Series,DataFrame

一,数据类型

用dtype属性来显示元素的数据类型,pandas主要有以下几种dtype:

  • object:表示字符串类型
  • int:表示整数类型
  • float:表示浮点数类型
  • datetime:表示时间类型
  • bool:表示布尔类型

二,序列

Series 是由一组有序的数据以及与之相关的索引组成,可以通过索引来访问Series对象中的元素。

1,创建序列

仅使用一组数据就可以产生最简单的Series,此时索引是从0依次递增的整数:

obj=Series([4,7,-5,3])

可以通过Series对象的values和index属性查看序列的值和索引:

obj.values
## array([4,7,-5,3])
obj.index
## Int64Index([0,1,2,3])

可以使用自定义的列表来创建序列:

obj=Series([4,7,-5,3],index=[d,b,a,c])

如果数据存储在一个Python字典结构中,也可以直接通过字典来创建Series:

>>> sdata = {b: 12, a: 13, d: 14, c: 10}
>>> sd=pd.Series(sdata)
b    12
a    13
d    14
c    10
dtype: int64

2,访问序列的元素

通过索引来访问序列的元素,并可以修改序列元素的值

sd[a]=4

三,数据框

数据框类似于二维的关系表,含有一组有序的列,每列可以是不同的数据类型;DataFrame既有行索引(index),也有列索引(columns),可以认为,DataFrame的每一列都是一个Series对象。

1,使用DataFrame函数来创建数据框

通过等长的字典来创建数据框,并可以设置数据框的列名和行索引。

>>> data = {state: [Ohio, Ohio, Ohio, Nevada, Nevada],
...     year: [2000, 2001, 2002, 2001, 2002],
...     pop: [1.5, 1.7, 3.6, 2.4, 2.9]}
>>> row_num = [one, two, three, four, five]
>>> col_names=[year, state, pop]
>>> df=pd.DataFrame(data,columns=col_names,index=row_num)
       year   state  pop
one    2000    Ohio  1.5
two    2001    Ohio  1.7
three  2002    Ohio  3.6
four   2001  Nevada  2.4
five   2002  Nevada  2.9

2,访问DataFrame的元素

通过列名,访问DataFrame的元素的方法有两种:索引方式和. 号方式,这两种方式返回的都是数据框中一整列的数据:

df[state]
df.state

通过行索引可以返回一整行的数据,行索引可以通过位置或名称来获取,使用对象的索引字段ix:

df.ix[three]

3,修改DataFrame对象

修改已有的数据,例如,设置第一列的值,把第一列的值全部设置为“NewYork”

df.state[0]=‘NewYork

当对不存在的列赋值时,pandas会向DataFrame对象中新建一列:

df[avg_age]=34

关键字 del 用于删除DataFrame中的列:

del df[age]

4,DataFrame的索引

obj是DataFrame对象,有多种方式来索引DataFrame对象:

  • obj[col]:选取DataFrame对象的单个列或一组列
  • obj.ix[row]:选取DataFrame对象的单行或一组行
  • obj.ix[:,col]:和obj[col]的作用相同,
  • obj.ix[row:col]:同时选取DataFrame对象的行和列
  • icol,irow:根据整数位置选取单列或单行

四,删除行和列

drop()函数用于删除指定轴(Axis)上的数据项,

drop(labels=None, axis=0, index=None, columns=None,level=None, inplace=False):

参数注释:

  • labels:一个字符或者数值,或者是字符或数值的列表,和axis搭配,表示行索引或列索引
  • axis:axis=0表示行,axis=1表示列
  • columns:表示DataFrame对象的列名
  • index:表示DataFrame或Series对象的index, 如index=1, index=‘a‘
  • inplace:True表示删除某行后原dataframe变化,False不改变原始dataframe

注意:对于 inplace参数,如果设定为True,那么原始序列或数据框直接被替换;如果设置inplace=False,原始序列或数据框对应的内存值并不改变,要保留函数执行的结果,需要将新的结果赋给一个新的对象。先删除index=0的行,再删除列名为a的数据

1,基于index 和columns来删除数据

先删除index=0的行,再删除列名为a的数据

df.drop(index=0) 
df.drop(colum=‘a‘)

2,基于labels和axis来删除数据

先删除 "行号为0" 的数据,再删除列名为a的数据

df.drop(labels=0, axis=0) 
df.drop(labels=‘a‘,axis=1)

五,处理缺失数据

缺失值NA的处理方法:

  • dropna:删除函数有缺失值的行或列
  • fillna:用指定值填充缺失值
  • isnull:返回一个含有布尔值的对象,表示哪些值是缺失值
  • notnull:返回一个含有布尔值的对象,表示哪些值不是缺失值

 

 

 

 

 

参考文档:

pandas 学习(1): pandas 数据结构之Series

Pandas简易入门(一)

Pandas: Drop函数(Dataframe删除指定行列)

Python 学习 第十二篇:pandas

原文:https://www.cnblogs.com/ljhdo/p/10593914.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!