数据分析 day04(一)

pandas

pandas是数据分析的核心框架,集成了数据结构化和数据清洗以及数据分析的一些方法。pandas在numpy的基础上新增了3个数据结构,Series、DataFrame、Pannel

安装
在黑屏终端使用命令

pip insatll pandas
下载慢的话,使用国内镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas

导入pandas

import pandas as pd
# 和numpy联用
import numpy as np

1. Series

series是一种类似于一维数组的对象,由以下两部分构成:
values:一个一维数组(ndarray类型)
index:相关数据的索引

导入

from pandas import Series
1.1 Series的创建
1.1.1 用数组或者列表来创建

在用数组或列表创建Series的时候,需要传两个参数
参数data,必须传,它作为Series的values部分;
参数index,不是必须传的,index作为Series的index部分,如果不传,则默认取数字或者列表的
下标作为index部分(从0开始)
【注】index可以重复

  1. 数组方式:
    首先创建一个数组
    在这里插入图片描述
    通过数组创建Series
    在这里插入图片描述
    修改index值
    在这里插入图片描述
  1. 列表方式
    在这里插入图片描述
1.1.2 用字典来创建

用字典创建,index部分由字典的键(keys)组合而成,values部分由字典的值(values)组合而成
用字典创建index中的个数可以和字典中的键值对个数不一致,不一致的地方字典中对应的键不取,
这些不一致index值对应value是NaN

首先创建一个字典
在这里插入图片描述
通过字典创建Series
在这里插入图片描述

问题:字典、数组、列表创建的时候有没有产生副本拷贝?

  1. 通过元组创建的对象
    在这里插入图片描述
    由数组创建Series没有产生副本,而是将数组直接作为Series的values部分,所以修改的时候可以直接修改values的值
  1. 通过列表创建的对象
    先通过列表l创建一个对象s3
    在这里插入图片描述
    修改一下第一个值,输出列表,发现列表本身并没有变化,所以产生了副本
    在这里插入图片描述

由列表创建Series产生的副本,列表首先会被拷贝副本,然后将副本创建成一个数组,做为 series的values部分

  1. 通过字典创建的对象
    s2是通过字典创建的Series对象
    在这里插入图片描述
    修改一下B的value,查看字典,发现字典本身的 键"B" 对应的value值并没有改变,所以产生了副本
    在这里插入图片描述
    由字典创建Series产生的副本,首先取index,根据index的顺序才能从字典中取键相对应的值,
    如果没有用NaN表示,然后把这些相对应的值构成一个数组作为Series的values部分
2、Series的属性

属性:index、values、shape、size
首先看一下s这个对象
在这里插入图片描述

2.1 index属性

index是一个index对象里面是一个列表,第二个元素是"c"(从0开始数)
在这里插入图片描述
index属性只读,不能随意修改,比如这里修改第二个元素,想将c改成f,直接报错
在这里插入图片描述
不能随意更改,其实还是可以有方法更改的
通过给index属性重新赋值的方式更改,这一列的index都改了
在这里插入图片描述

2.2 values属性

values本身就是一个数组,可通过下标获取对应的value值(从0开始)
在这里插入图片描述
values属性内容可读可写
将第二个元素改为100
在这里插入图片描述

2.3 shape、size

shape 形状 size 大小
Series的形状是一维,用于处理对一维数据的整合与分析
在这里插入图片描述

3、Series的索引与切片

Series有两种索引方式:隐式索引和显式索引

3.1 显式索引

显式索引就是用index值来作为索引

有两种方式:用键值的形式来写和用loc的形式来写,推荐用loc
在这里插入图片描述

在进行索引的时候需要注意:

  1. series是一维数据结构,不能用多层索引
  2. 如果用一个index值作为索引,这个index值对应的values如果是一个则得到一个具体常数,如果对应的是多个,则得到的是一个Series
  3. 如果用一个列表中装若干(包含1个)个index值作为Series的索引,则得到的是一个Series

如果要索引多个,并不是加逗号就行了,可以看到报错了,这样去索引的话是一个多层索引,Series是一维,只有一层索引,所以无法进行多层索引,
在这里插入图片描述
但是就是想取到相应的多个values,怎么做呢?可以通过得到一个Series的方法,但显示的不单单只有values,还有相应的index值
在这里插入图片描述
多加一层中括号,就变成了Series
对比一下就i明白什么意思了,这个是Series,以键值的方式显示
在这里插入图片描述
对比前面的只有一层中括号,表示的是通过用index值来作为索引显示的是value值
在这里插入图片描述
意思就是用一个列表中装若干(包含1个)个index值作为Series的索引去进行索引,得到的是得到的是一个Series
在这里插入图片描述

3.2 隐式索引

使用values部分的下标来作为索引

同 显式索引,也有两种方法:
通过数组下标直接查找 和 使用iloc方式来索引
在这里插入图片描述

如果要索引多个呢?也是和显式索引一样,通过列表的形式
在这里插入图片描述
如果直接索引两个,变成了多层索引,会报错
在这里插入图片描述

3.3 切片

首先创建一个Series对象
在这里插入图片描述
显示索引切片

  1. 显示切片前后都可以取到,即前后都是闭区间
    在这里插入图片描述
  2. 如果端点处的索引有多个,切他们连续,则可以切到最后一个
    在这里插入图片描述
  3. 如果端点有多个,但是多个端点不连续,则不能用其作为端点
    在这里插入图片描述

因为这里两个e被 f 隔开了
在这里插入图片描述

隐式索引切片
在这里插入图片描述

【拓展】
先创建一个Series对象s
在这里插入图片描述
再创建一个Series对象s1
s1和s之间index部分完全一致,s1的values部分为bool类型,s的values部分为普通数据
在这里插入图片描述
此时s1表达的内容可以是为True的那些索引是需要输出部分

用s1作为s的索引
ndex为True的那些元素被输出
在这里插入图片描述

4、Series的数据清洗

数据清洗:主要是清洗数据缺失部分和异常部分

4.1 缺失

首先创建一个Series对象s1,DEF没有给定数值,默认用NaN补上
在这里插入图片描述

  1. 判断缺失 isnull()
    isnull用于判断某些未知的values是否有缺失,如果有缺失则设置为True没有就设置为False
    在这里插入图片描述
  1. 判断是否不缺失 notnull()在这里插入图片描述
  1. 输出正常值和缺失值
    cond1 缺失值显示True cond2 正常值显示True
    在这里插入图片描述
  1. 给缺失值重新赋值
    cond1 缺失值显示True
    在这里插入图片描述
4.2 异常

异常源于需求:需求分析中说什么情况下是异常,此数据就是异常

创建一个Series对象,其中20个元素为[0~100)的随机整数
在这里插入图片描述
规定:大于20的值全是异常值
用比较预算符进行比较运算的时候,一会生成一个values值为bool类型的Series,将异常值输出
在这里插入图片描述

5、Series之间运算

分别创建两个Series对象s1,s2
在这里插入图片描述

自动补全机制:
两个Series进行算术运算的时候,如果索引有不一致的地方,首先将两个Series中不一致的索引对应的值补NaN

在这里插入图片描述
可以看到,只有名字同时在两个对象中的数字进行了相加,其他的都变为了NaN

拓展
Series和ndarray的运算实际上就是那Series的values部分和ndarray进行运算

Series和数组之间的加减:
Series对象s1
在这里插入图片描述
数组nd
在这里插入图片描述
结果
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值