python--数据分析pandas

2023-11-09

1.pandas概述

Pandas是进行科学数据分析中另一个比较常用的数据库,基于NumPy,但加入了更多的高级数据结构以及操作工具,进一步简化了NumPy等运算与应用。

1.1安装

pip install pandas

可以通过import库检查Pandas是否安装成功

from pandas import Seeries,DataFrame
import pandas as pd

1.2Series数据结构

与一维数组相似,由一组数据以及对应的数据标签组成,索引在左边,值在右边。
如果没有为数据规定对应的索引,则会自动创建一个范围为0到n-1的整数索引;通过values和index属性获取数组表示形式和索引对象。
在这里插入图片描述
指定索引

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

在这里插入图片描述

1.3DataFrame

是表格类型,它可以有很多有序的列,每一列都可以设置不同的内容与类型,包括字符串、数值、布尔等。
可以采用行或者列的形式进行索引,

data = {'name':['Tom','Marry','Herry'],'year':[1996,1997,1998],'grade':[86,79,93]}

frame = DataFrame(data)

frame
Out[20]: 
    name  year  grade
0    Tom  1996     86
1  Marry  1997     79
2  Herry  1998     93
#指定列顺序,则会按照指定顺序进行排列
DataFrame(data,columns = ['year','grade','name'])
Out[21]: 
   year  grade   name
0  1996     86    Tom
1  1997     79  Marry
2  1998     93  Herry
#可以获取DataFrame的某一列作为一个Series,返回的Series拥有与原来相同的索引
frame['name']
Out[22]: 
0      Tom
1    Marry
2    Herry
Name: name, dtype: object

frame.year
Out[23]: 
0    1996
1    1997
2    1998
Name: year, dtype: int64

1.4基本操作

1.4.1. 重新索引

可以创建与旧索引不同的索引,能够适应新索引对象。
reindex:根据新索引进行重排,同时如果某个索引值当前不存在,就引起缺失值。
在这里插入图片描述

1.4.2. 丢弃

drop:返回一个丢弃了指定行或列中的新对象。
(就是删除后的对象)
例一:

import numpy as np
obj=Series(np.arange(5.),index=['a','b','c','d','e'])

obj
Out[34]: 
a    0.0
b    1.0
c    2.0
d    3.0
e    4.0
dtype: float64

new_obj = obj.drop('c')

new_obj
Out[36]: 
a    0.0
b    1.0
d    3.0
e    4.0
dtype: float64

例二:

import numpy as np
from pandas import DataFrame
data = DataFrame(np.arange(16).reshape((4,4)),index=['math','English','Chinese','Sports'],columns = ['one','two','three','four'])

data
Out[16]: 
         one  two  three  four
math       0    1      2     3
English    4    5      6     7
Chinese    8    9     10    11
Sports    12   13     14    15

data.drop('Chinese')
Out[17]: 
         one  two  three  four
math       0    1      2     3
English    4    5      6     7
Sports    12   13     14    15

data.drop('two',axis = 1)
Out[18]: 
         one  three  four
math       0      2     3
English    4      6     7
Chinese    8     10    11
Sports    12     14    15

1.4.3. 索引

Series索引的方式类似与NumPy数组的索引,但它的索引和切片不仅可以用整数,还可以用对应的标记。

import numpy as np
from pandas import Series,DataFrame
obj = Series(np.arange(4.),index = ['a','b','c','d'])

obj
Out[20]: 
a    0.0
b    1.0
c    2.0
d    3.0
dtype: float64

obj['b']
Out[21]: 1.0

obj[1]
Out[22]: 1.0

obj[['b','c']]
Out[23]: 
b    1.0
c    2.0
dtype: float64

obj[1:3]
Out[24]: 
b    1.0
c    2.0
dtype: float64

切片运算与普通的python切片运算是不同的,你会发现其末端是包含在内的。

1.4.4. 算术运算

最常用的功能之一,它是首先保证索引对应相同,再对相应的内容进行加减等操作。如果存在不相同的索引对,则结果是该索引对的并集

import numpy as np
from pandas import Series,DataFrame
df1 = DataFrame(np.arange(9.).reshape((3,3)),columns=list('bcd'),index=['Tom','Mary','Alice'])
df2 = DataFrame(np.arange(12.).reshape((4,3)),columns=list('bde'),index=['Mary','Alice','Mike','Tom'])

df1
Out[32]: 
         b    c    d
Tom    0.0  1.0  2.0
Mary   3.0  4.0  5.0
Alice  6.0  7.0  8.0

df2
Out[33]: 
         b     d     e
Mary   0.0   1.0   2.0
Alice  3.0   4.0   5.0
Mike   6.0   7.0   8.0
Tom    9.0  10.0  11.0

df1+df2
Out[34]: 
         b   c     d   e
Alice  9.0 NaN  12.0 NaN
Mary   3.0 NaN   6.0 NaN
Mike   NaN NaN   NaN NaN
Tom    9.0 NaN  12.0 NaN

2.数据清洗

很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要对使数据分析更加准确,就需要对这些没有用的数据进行处理

2.1清洗数据

  1. 使用 dropna() 方法,要删除包含空字段的行;
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
  1. 如果你要修改源数据 DataFrame, 可以使用 inplace = True 参数;
  2. 通过 isnull() 判断各个单元格是否为空;
  3. Pandas使用 mean()、median() 和 mode() 方法计算列的均值(所有值加起来的平均值)、中位数值(排序后排在中间的数)和众数(出现频率最高的数);
  4. 使用 mode() 方法计算列的众数并替换空单元格

2.2清洗重复数据

如果我们要清洗重复数据,可以使用 duplicated() 和 drop_duplicates() 方法。
如果对应的数据是重复的,duplicated() 会返回 True,否则返回 False。

3.一点小技巧

  • shift+enter:将关闭多行编辑并执行任何输入的代码;
  • ctrl+enter:将开启多行编辑;
  • 使用索引字段ix,可以从DataFrame中选取行和列的子集;
obj.ix[val] 选取DataFrame的单个行或一组行
obj.ix[:,val] 选取单个列或列子集
obj.ix[val1,val2 同时选取行和列
  • 可以使用 to_csv() 方法将 DataFrame 存储为 csv 文件;
  • to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 … 代替;
  • head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行;
  • tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。;
  • info() 方法返回表格的一些基本信息

最后,看到这里的朋友们也可以看看菜鸟教程,适合像我一样的新手!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python--数据分析pandas 的相关文章

随机推荐

  • 深度学习之实现图像数据增强

    深度学习之实现图像数据增强 前言 数据增强的意思就是让数据量增多 对于深度学习来说 大的数据量可以训练出更好的深度学习模型 在图像增强方面 我们常用的手段如下 旋转 翻转 缩放 平移 尺度变换 对比度变换 噪声扰动 颜色变换 1 使用ten
  • What the f*ck Python!(中文翻译版)

    What the f ck Python From https github com leisurelicht wtfpython cn 一些有趣且鲜为人知的 Python 特性 Python 是一个设计优美的解释型高级语言 它提供了很多能
  • SPFA 算法模板

    SPFA 代替 Dijkstra 计算最短路 题目 题目链接 题解 SPFA 一般时间复杂度为 O m O m O m 最坏情况下为 O
  • CNN人脸识别项目(dlib+opencv)

    CNN人脸识别 获取数据集 读取数据集 数据预处理 建立模型进行预训练 对图片进行人脸进行检测并进行可视化 总结 思路 一个CNN人脸识别项目首先必不可少的是数据集 获取的方式有网站数据库 PubFig Public Figures Fac
  • ORACLE查询删除重复记录三种方法

    比如现在有一人员表 表名 peosons 若想将姓名 身份证号 住址这三个字段完全相同的记录查询出来 复制代码代码如下 select p1 from persons p1 persons p2 where p1 id lt gt p2 id
  • 如何实现Java的JDBC编程(基本概念,驱动包安装)

    Java的JDBC编程 这里写目录标题 Java的JDBC编程 1 概念 2 安装驱动包 3 实现JDBC编程 1 概念 何为 JDBC编程 就是通过Java代码来操作数据库 咱们学数据库 无论是命令行 还是图形化界面 都不是开发中的主流使
  • 测试工作中一定要学会做业务总结

    前言 在日常的测试工作中 不知道大家是否会有梳理自己测试业务的习惯 我个人觉得这个事情是值得做的 最好培养成一个习惯 另外一定要依托于业务价值来实现自己的变现 梳理被测业务 就是一种很好的自我提升方式 测试工作中一定要学会业务总结 一 为什
  • JavaWeb之xml学习笔记一(约束初步使用)

    html和xml的不同点 元素和属性 html中的元素和属性都是预先设定的 而xml中没有预想设定的元素和属性 xml是可扩张的标记语言 标记可以用户自定义元素和属性 使用目的 html使用来显示界面的 注重的是外观和功能 而xml是用来传
  • Feign远程调用 请求头丢失问题及解决方案

    问题描述 在微服务项目中 通过Feign远程调用另一个模块的接口 由于请求头没传过去导致接口调用失败 解决办法 feign调用远程接口时 会扫描所有的拦截器 执行apply方法 我们可以创建一个拦截器放到spring容器中 在拦截器里把原来
  • module ‘scipy.misc‘ has no attribute ‘imresize‘

    报错 AttributeError module scipy misc has no attribute imresize 解决方法 使用skimage库 conda install scikit image 注意 scipy misc i
  • 第十六章PHY -基于Linux3.10

    下载地址 http download csdn net detail shichaog 8620701 16 1 PHY 本章和OSI模型中的物理层和数据链路层关系密切 在嵌入式SOC上 通常集成有ARM核和MAC控制器 以及增加数据传输带
  • 信噪比和信干噪比

    1 信噪比 即香农公式 信道容量公式 中的S N C B log 2
  • java和javascript区别_java和javascript之间有什么区别

    java和javascript之间有什么区别 本篇文章就给大家介绍java和javascript之间的区别 让大家了解java和javascript是什么 它们之间的差异有哪些 有一定的参考价值 有需要的朋友可以参考一下 希望对你们有所帮助
  • 数据库实验——数据表的导入导出

    管理数据表 创建表的目在于利用表进行数据的存储和管理 对数据进行管理的前提是数据的存储 向表中添加数据 没有数据的表是没有任何实际意义的 添加完成后 用户也可以根据自己的需要对表中数据进行修改和删除 在SQL Server 2008中 对于
  • PowerDesigner显示汉字表名和英文表名

    菜单 gt Tool gt Model Options gt Name Convention gt 右侧display中选择显示name还是code 不支持同时显示 但可以选择显示code 然后将name填入stereotype中 变相同时
  • torchtext建立词表build_vocab()时使用自己的word2vec模型

    代码如下 如果对于torchtext本身不太了解 可以参考 torchtext处理文本数据 构造dataset读取文本 学习一 torchtext处理文本数据 构造dataset读取文本 学习一 from torchtext import
  • Java运行机制及运行过程

    Java核心机制 Java虚拟机 JVM Java Virtual Machine JVM是一个虚拟的计算机 具有指令集并使用不同的存储区域 负责执行指令 管理数据 内存 寄存器 包含在JDK中 对于不同的平台 有不同的虚拟机 Java虚拟
  • Java开发必学!kafka从入门到精通

    四面阿里 面试岗位是研发工程师 直接找蚂蚁金服的大佬进行内推 参与了阿里巴巴中间件部门的提前批面试 一共经历了四次面试 拿到了口头offer 一面 自我介绍 项目中做了什么 难点呢 Java的线程池说一下 各个参数的作用 如何进行的 Red
  • Could NOT find CUDNN: Found unsuitable version “..“, but required is at least “6“

    现象 在编译cuda版本的opencv4 1时 使用cmake配置时找不到cudnn 实际已安装 原因 由于安装的cudnn版本为8 2 原先记录cudnn版本的宏定义 CUDNN MAJOR和CUDNN MINOR 由cudnn h 移动
  • python--数据分析pandas

    1 pandas概述 Pandas是进行科学数据分析中另一个比较常用的数据库 基于NumPy 但加入了更多的高级数据结构以及操作工具 进一步简化了NumPy等运算与应用 1 1安装 pip install pandas 可以通过import