import numpy as py

import pandas as pd

Series对象

data= pd.Series([0.25,0.5,0.75,1.0])   默认索引是数字

data=pd.Series([0.25,0.5,0.75,1.0],index=['a','b','c','d'])   用字符串定义索引,也可以用不连续的索引

data['b']

data['a':'c']  支持切片操作

pd.Series(data,index=index)

data可以是列表或numpy数组

pd.Series([2,4,6])

也可以是标量,创建时会重复填充到每个索引上

pd.Series([5,index=[100,200,300])

也可以是字典,index默认是字典的键

pd.Series({2:'a',3:'b'})

series的字典式映射方法

data=pd.Series([0.25,0.5,0.75,1.0],

        index=['a','b','c','d'

      )

判断data中是否有a索引

'a' in data

获取data索引

data.keys()

获取所有数据

list(data.items())

增加新索引

data['e']=10.25

切片:

  显示索引做切片,包含最后一个值

  data['a':'c']

  隐式整数索引做切片,不包含年最后一个值

  data[0:2]

掩码:

  data[(data>0.3) & (data<0.7)]

花哨索引:

  data[['a,'e']]

索引器:为了防止series为整数索引是,取值为显式索引,切片为隐式索引而混淆

  loc:表示取值和切片都是显式

  data=pd.Series(['a','b','c'],index=[1,3,5])

  data.loc[1]

  data.loc[1:3]

  iloc:表示取值和切片都是隐式

  data.iloc[1]

  data.iloc[0:2]

  

DataFrame对象

通过字典列表创建

  data=[{'a':i,'b':2*i} for i in range(3)]

  x=pd.DataFrame(data)

通过series对象创建

  pd.DataFrame({'data':data,'age':[1,2,3,4])

*注意此处data是前面series创建好的有索引的对象

通过numpy创建

pd.DataFrame(np.random.rand(3,2),

      columns=['name','age'],

      index=['a','b','c']

      )

x.index获取行索引标签,x.columns获取列索引标签

pandas 的index对象

创建对象

ind=pd.Index([2,5,6,7,11])

切片,索引

ind[1],ind[::2]

inda=pd.Index([1,3,5,7,9])

indb=pd.Index([2,3,5,7,11])

交集

inda & indb

并集

inda | indb

异或

inda ^ indb

DataFrame数据选择方法

name = pd.Series({'a':'xi','b':'lin','c':'saber'})

age = pd.Series({'a':18,'b':20,'c':'18'})

data = pd.DataFrame({'name':name,'age':age})

data['name'] 等价于data.name,推荐前者

data.values  查看数组数据

data.values[0] 查看第一行数据

data.T 转置

loc,iloc与series对象中的用法相同

data.loc[:'lin',:'age']

data.iloc[:3,:2]

ix混合使用,不常用

data.ix[:3,:'age']

与掩码和花哨索引结合使用

data.loc[data.age>18,['name','age']]

更新数据

data[0,1]= 20

numpy通用函数pandas也适用

当用两个series对象创建dataframe对象时,会取两个对象的并集,没有的用nan代替

两个dataframe运算时也适用

也可以自定义缺失值

a=pd.DataFrame(np.random.randint(0,20,(2,2)),

        columns=list('ab'))

b=pd.DataFrame(np.random.randint(0,10,(3,3)),

        columns=list('bca'))

fill = a.stack().mean()

a.add(b,fill_value=fill)   a的缺失值用fill填充

缺失值处理:

  常用标签nan(not a number)

  val = np.array([1,np.nan,3,4])

  val.sum,max,min  会将nan的影响算进去

  np.nansum(val) ,nanmax,nanmin 忽略nan的影响

  

  data= pd.Series([1,np.nan,'hello',None])

  发现缺失值:

  data.isnull()

  data[data.notnull()]

  剔除缺失值:

  data.dropna()

  df = pd.DataFrame([[1,np.nan,2],

           [2,3,5],

           [np.nan,4,6]])

  df.dropna()    删除含有缺失值的整行数据   ,axis=1或axis='columns' 删除整列数据

  df[3] = np.nan

  df.dropna(axis='columns',how='all)   all表示删除全是缺失值的那行,any表示有缺失值就删除

  df.dropna(axis='row',thresh=3)  表示最少含有3个非缺失值的行才会被保留

  填充缺失值:

  data=pd.Series([1,np.nan,2,None,3],index=list('avcde'))

  data.fillna(0)  缺失值用0填充

  data.fillna(method='ffill')  用缺失值前面的有效值填充,bfill用后面的有效值填充

  data.fillna(method='ffill',axis=1)  每行的前面有效值填充

  如果缺失值前面没有值,那么仍然是缺失值

  

  

  

pandas(一)的更多相关文章

  1. pandas基础-Python3

    未完 for examples: example 1: # Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEM ...

  2. 10 Minutes to pandas

    摘要   一.创建对象 二.查看数据 三.选择和设置 四.缺失值处理 五.相关操作 六.聚合 七.重排(Reshaping) 八.时间序列 九.Categorical类型   十.画图      十一 ...

  3. 利用Python进行数据分析(15) pandas基础: 字符串操作

      字符串对象方法 split()方法拆分字符串: strip()方法去掉空白符和换行符: split()结合strip()使用: "+"符号可以将多个字符串连接起来: join( ...

  4. 利用Python进行数据分析(10) pandas基础: 处理缺失数据

      数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...

  5. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  6. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

  7. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  8. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  9. pandas.DataFrame对行和列求和及添加新行和列

    导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFra ...

  10. pandas.DataFrame排除特定行

    使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列 ...

随机推荐

  1. windows下安装setuptools与pip

    1.下载 setuptools与pip 下载地址如下: https://pypi.Python.org/pypi/setuptools https://pypi.Python.org/pypi/pip ...

  2. iOS 中的屏幕旋转shouldAutorotate和supportedInterfaceOrientations的先后关系

    这2个UIViewController的属性,都和旋转相关, 当设备发生旋转时,首先会查看根controller的shouldAutorotate是否允许旋转,如果允许,再通过 supportedIn ...

  3. 小程序 第一个学习示例(TodoList)

    1. 概述 1.1 说明 在微信开发者工具环境下开发一个简易的TodoList功能,以便能够进行学习与熟练小程序相关功能与信息.. 示例中,初步计划包含以下功能: 1.能够进行新增计划信息 2.计划信 ...

  4. SlopeOne

    相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,“商品推荐”,"猜你喜欢“,在实体店中我们有导购来为我们服务,在网络上 我们需要同样的一种替代物,如果简简单单的在数据库 ...

  5. 关于git 远程仓库密码一直输错的问题

    解决方法, git 换地方使用后需要重新配置秘钥,一个钥匙开一个地方的门: 如果还不行, 在控制面板-用户账户-凭据管理-加添凭证,输入正确的账号密码:因为Windows的凭据管理器里面可能保存了你刚 ...

  6. 在vue里添加好看的lottie动画 (^_^)

    为什么用lottie ★~★ 1.能让你的程序不那么单调 2.能让一些有审美强迫症的同学好受一点 3.网上有丰富的资源 点我进入lottie资源网站 引入lottie库 (>.<) 在vu ...

  7. flask + MySQL-python 创建 webapp 应用

    0 - python 用自带的 wgsi 也可以创建 web 服务1)建立 hello.py 内容如下 # hello.pydef application(environ, start_respons ...

  8. LOJ.6504.[雅礼集训2018 Day5]Convex(回滚莫队)

    LOJ 莫队.发现只需要维护前驱后继就可以了. 但是加入一个点需要找到它当前的前驱后继,很麻烦还带个\(\log\). 但是如果只有删除某个点,只需要更新一下它的前驱后继即可. 用回滚莫队就好惹. 撤 ...

  9. Java 多线程 sleep()方法与yield()方法的区别

    sleep()方法与yield()方法的区别如下: 1 是否考虑线程的优先级不同 sleep()方法给其他线程运行机会时不考虑线程的优先级,也就是说,它会给低优先级的线程运行的机会.而yield()方 ...

  10. javascript基础常识了解一下

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...