博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十章、jupyter入门之pandas
阅读量:5291 次
发布时间:2019-06-14

本文共 2703 字,大约阅读时间需要 9 分钟。

目录

第十章、jupyter入门之pandas

一、什么是pandas

  • pandas是基于numpy的一种工具,这个工具是为了解决数据分析任务而创建的
  • pandas纳入利润大量库及标准的数据类型,提供了高效的操作的大型的数据集所需要的工具
  • pandas提供了大量能使我们快捷的处理数据的函数与方法
  • 它是python成为强大而高效的数据分析环境的重要因素之一

导入

# 三剑客import numpyimport pandasfrom pandas import Series,DataFrame

二、Series

Series是一种类似于一组的对象* values:一组数据(ndarrary)*index:相关的数据索引标签
  1. 创建

    • 由列表或numpy数组创建

      s1 = Series([1,2,3,4])>>> 0    1    1    2    2    3    3    4  dtype: int64s1 = np.array([1,2,3,4])>>> array([1, 2, 3, 4])

      注意:由ndarray创建的是引用,不是副本,对Series元素的改变也会原来的ndarrary改变对象的元素(列表没有这种情况)

    • 由字典创建

      dic = {  'name':'dancer',  'age':19,  'address':'hangzhou'}s3 = Series(data=dic)
  2. 索引和切片

    1. 索引和切片
      loc为显示切片(通过键),iloc为隐式切片(通过索引)

    访问单个元素

    s[indexname]s.loc[indexname] 推荐s[loc]s.iloc[loc] 推荐

    访问多个元素

    s[[indexname1,indexname2]]s.loc[[indexname1,indexname2]] 推荐s[[loc1,loc2]]s.iloc[[loc1,loc2]] 推荐

三、基本概念

可以把Series看成一个定长的有序字典

可以通过shape(维度),size(长度),index(键),values(值)等得到series的属性

4.基本运算

运算的原则就是索引对齐,如果缺失索引,对应位置补np.nan
NaN 是np.nan在pandas中的显示形式
可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据
可以使用isnull和any结合,来查看某一列或一行数据中是否存在缺失值

四、基本运算

运算的原则就是索引对齐,如果缺失索引,对应位置补np.nan

NaN 是np.nan在pandas中的显示形式
可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据
可以使用isnull和any结合,来查看某一列或一行数据中是否存在缺失值

# 需求:提取s3对象中的所有非空数据s3[s3.notnull()]# 提取空值的索引s3[s3.isnull()].index# Sereis,对象可以使用一个与该对象等长的bool_list列表作为index访问数组元素# 碰到True,就把对应位置的值返回s3[[True,False,True,True,True,False]]# name属性为Series对象添加列索引s3.name = 'haha'

pandas会自动处理空值

add()sub()mul()div()

Series之间的运算

  • 在运算中自动对齐不同索引的数据

  • 如果索引不对应,则补NaN

  • # fill_value设置空值的填充值s1.add(s2,fill_value=0)

五、DataFrame

DataFrame是一个【表格型】的数据结构,可以看做是【由Series组成的字典】(共用同一个索引)。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

行索引:index列索引:columns值:values(numpy的二维数组)
  1. 创建
    最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。
dic = {    '张三':[150,150,150,300],    '李四':[0,0,0,0]}DataFrame(data=dic,index=['语文','数学','英语','理综'])

也可以用下面代码实现创建

data = [[0,150],[0,150],[0,150],[0,300]]index = ['语文','数学','英语','理综']columns = ['李四','张三']df = DataFrame(data=data,index=index,columns=columns)>>>>>>李四  张三>>>语文  0   150>>>数学  0   150>>>英语  0   150>>>理综  0   300>>>>>>

此外,DataFrame会自动加上每一行的索引(和Series一样)。

同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。

  1. 索引

(1) 对列进行索引

  • 通过类似字典的方式
  • 通过属性的方式

    可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且name属性也已经设置好了,就是相应的列名。

(2) 对行进行索引

  • 使用.ix[]来进行行索引
  • 使用.loc[]加index来进行行索引
  • 使用.iloc[]加整数来进行行索引

    同样返回一个Series,index为原来的columns。

(3) 对元素索引的方法

  • 使用列索引
  • 使用行索引(iloc[3,1]相当于两个参数;iloc[[3,3]] 里面的[3,3]看做一个参数)
  • 使用values属性(二维numpy数组)
    索引行
df.loc[indexname] 推荐df.iloc[loc]

索引列

df[columnname] 推荐df.columnname

索引元素

df.loc[indexname].loc[columnname]df[columnname].loc[indexname]df.loc[indexname,columnname] 推荐

转载于:https://www.cnblogs.com/demiao/p/11397389.html

你可能感兴趣的文章
Competing Consumers Pattern (竞争消费者模式)
查看>>
HDUOJ ------1398
查看>>
cf--------(div1)1A. Theatre Square
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
Tomcat 报错的解决方法:The APR based Apache Tomcat Native library which allows optimal
查看>>
最长公共子串问题(LCS)
查看>>
TortoiseSVN is locked in another working copy
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>
ubuntu 安装后的配置
查看>>
Html学习_简易个人网页制作
查看>>
angular中ng-bind指令小案例
查看>>
jqery总结
查看>>
Lodop获取客户端主网卡ip地址是0.0.0.0
查看>>
VSCODE更改文件时,提示:EACCES: permission denied的解决办法(mac电脑系统)
查看>>
web前端之路,js的一些好书(摘自聂微东 )
查看>>
【模板】对拍程序
查看>>
微信小程序开发初体验
查看>>
dos批处理(bat)运行exe
查看>>
关键字
查看>>
Pycharm安装Markdown插件
查看>>