第十章、jupyter入门之pandas

一、什么是pandas

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

导入

  1. # 三剑客
  2. import numpy
  3. import pandas
  4. from pandas import Series,DataFrame

二、Series

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

    • 由列表或numpy数组创建

      1. s1 = Series([1,2,3,4])
      2. >>> 0 1
      3. 1 2
      4. 2 3
      5. 3 4
      6. dtype: int64
      7. s1 = np.array([1,2,3,4])
      8. >>> array([1, 2, 3, 4])

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

    • 由字典创建

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

    1. 索引和切片

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

    访问单个元素

    1. s[indexname]
    2. s.loc[indexname] 推荐
    3. s[loc]
    4. s.iloc[loc] 推荐

    访问多个元素

    1. s[[indexname1,indexname2]]
    2. s.loc[[indexname1,indexname2]] 推荐
    3. s[[loc1,loc2]]
    4. 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结合,来查看某一列或一行数据中是否存在缺失值

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

pandas会自动处理空值

  1. add()
  2. sub()
  3. mul()
  4. div()

Series之间的运算

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

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

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

五、DataFrame

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

  1. 行索引:index
  2. 列索引:columns
  3. 值:valuesnumpy的二维数组)
  1. 创建

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

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

  1. data = [[0,150],[0,150],[0,150],[0,300]]
  2. index = ['语文','数学','英语','理综']
  3. columns = ['李四','张三']
  4. df = DataFrame(data=data,index=index,columns=columns)
  5. >>>
  6. >>>李四 张三
  7. >>>语文 0 150
  8. >>>数学 0 150
  9. >>>英语 0 150
  10. >>>理综 0 300
  11. >>>
  12. >>>

此外,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数组)

    索引行
  1. df.loc[indexname] 推荐
  2. df.iloc[loc]

索引列

  1. df[columnname] 推荐
  2. df.columnname

索引元素

  1. df.loc[indexname].loc[columnname]
  2. df[columnname].loc[indexname]
  3. df.loc[indexname,columnname] 推荐

第十章、jupyter入门之pandas的更多相关文章

  1. 第十章 MyBatis入门

    第十章   MyBatis入门10.1 MyBatis入门        优点:简单且功能强大.能够完全控制SQL语句.容易维护和修改    缺点:移植性不好    使用步骤:        1.下载 ...

  2. Python数据分析入门之pandas基础总结

    Pandas--"大熊猫"基础 Series Series: pandas的长枪(数据表中的一列或一行,观测向量,一维数组...) Series1 = pd.Series(np.r ...

  3. 机器学习初入门02 - Pandas的基本操作

    之前的numpy可以说是一个针对矩阵运算的库,这个Pandas可以说是一个实现数据处理的库,Pandas底层的许多函数正是基于numpy实现的 一.Pandas数据读取 1.pandas.read_c ...

  4. 1 Ipython、Jupyter 入门

    为什么使用Python进行数据分析:     1 Python大量的库为数据分析和处理提供了完整的工具集     2 比起R和Matlab等其他主要用于数据分析的编程语言,Python更全能     ...

  5. Pandas系列之入门篇——HDF5

    Pandas系列之入门篇--HDF5 简介 HDF5(层次性数据格式)作用于大数据存储,其高效的压缩方式节约了不少硬盘空间,同时也给查询效率带来了一定的影响, 压缩效率越高,查询效率越低.pandas ...

  6. Python 数据处理库 pandas 入门教程

    Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ...

  7. 程序员用于机器学习编程的Python 数据处理库 pandas 入门教程

    入门介绍 pandas适合于许多不同类型的数据,包括: · 具有异构类型列的表格数据,例如SQL表格或Excel数据 · 有序和无序(不一定是固定频率)时间序列数据. · 具有行列标签的任意矩阵数据( ...

  8. Python数据分析 Pandas模块 基础数据结构与简介(一)

    pandas 入门 简介 pandas 组成 = 数据面板 + 数据分析工具 poandas 把数组分为3类 一维矩阵:Series 把ndarray强大在可以存储任意数据类型可以专门处理时间数据 二 ...

  9. Python数据分析入门与实践 学习

    pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程.pandas提供了快速,灵活和富有表现力的数据结构 ...

随机推荐

  1. java+ueditor word粘贴上传

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...

  2. Python-sympy科学计算与数据处理(方程,微分,微分方程,积分)

    方程 a,b,c,x = symbols("a b c x") my_eq = Eq(a*x**2+b*x+c,0) solve(my_eq,x) Out[12]: [(-b + ...

  3. 安装php的sphinx扩展模块

    转自 http://blog.csdn.net/fenglailea/article/details/38115821 首先你必须已经安装过了sphinx 如何安装sphinx请看:http://bl ...

  4. 在SSH里面远程启动ubuntu上的GUI程序

    由于嵌入式开发板上是ubuntu系统,开发板接有显示器,现有一GUI程序需要在开发板显示器上实时显示,开发板与本地通过网络SSH连接,正常情况执行如:firefox,那么firefox会显示到本地,只 ...

  5. 软件测试第2周个人作业:WordCount编码测试

    一.Github地址 https://github.com/zhouyubei/WordCount 二.PSP表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning ...

  6. 【图像处理】H.264有四种画质级别

    H.264有四种画质级别,分别是BP.EP.MP.HP,想要说明H.264 HP与H.264 MP的区别就要讲到H.264的技术发展了 H.264 视频编码技术在视频采集.后期制作等网络视频服务领域的 ...

  7. 在vue中使用Normalize初始化样式

    参考链接:https://www.jianshu.com/p/34533b45aac1

  8. 虚树+【BZOJ2286】【SDOI2011】消耗战(虚树)(DP)

    先看一道题: [BZOJ2286][SDOI2011]消耗战 Description 在一场战争中,战场由n个岛屿和n−1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总 ...

  9. 【转帖】linux下的各个目录的含义

    linux下的各个目录的含义 http://embeddedlinux.org.cn/emb-linux/entry-level/200809/22-85.html/bin/usr/local/bin ...

  10. [转帖]安装prometheus+grafana监控mysql redis kubernetes等

    安装prometheus+grafana监控mysql redis kubernetes等 https://www.cnblogs.com/sfnz/p/6566951.html plug 的模式进行 ...